
# 配置Ranger元数据存储至RDS
本章节旨在指导用户将现有集群的Ranger元数据切换为RDS数据库中存储的元数据。该操作可以使多个MRS集群共用同一份元数据，且元数据不随集群的删除而删除，也能够避免集群迁移时Ranger元数据的迁移。
#### 约束与限制
多个MRS集群对接同一个RDS且共用一份元数据时，需保证集群模式相同。
#### 停用集群组件Ranger鉴权
该操作仅在**MRS 3.1.0及之后版本**需要执行。
1. 登录MRS集群Manager界面。 
   登录集群Manager界面请参考[访问MRS集群Manager](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0128.html)。
   
   
2. 选择"集群 \> 服务 \> *服务名称* "。
   
   当前MRS 3.1.x及之后版本集群支持Ranger鉴权的组件为: HDFS、HBase、Hive、Spark、Impala、Yarn、Kafka、HetuEngine组件。
   
   
3. 在服务"概览"页面右上角单击"更多 \> 停用Ranger鉴权"，如果"停用Ranger鉴权"是灰色，则表示未开启Ranger鉴权无需停用Ranger鉴权，如[图1]所示。
   
   图1停用Ranger鉴权   
   ![](https://support.huaweicloud.com/usermanual-mrs/zh-cn_image_0000001925621325.png)
   
   
4. （可选）如需使用已有鉴权策略请执行该步骤在Ranger Web页面导出已有组件的鉴权策略，切换Ranger元数据完成后可重新导入已有的鉴权策略。此处以Hive为例，导出后会生成本地的JSON格式的策略文件。 
   1. 登录集群Manager页面。
   
   2. 选择"集群 \> 服务 \> Ranger"，进入Ranger服务概览页面。
   
   3. 单击"基本信息"区域中的"RangerAdmin"，进入Ranger WebUI界面。 开启Kerberos认证的集群admin用户在Ranger中的用户类型为"User"，如需查看所有管理页面，可单击右上角用户名后，选择"Log Out"，退出当前用户。
      使用**rangeradmin** 用户（默认密码为Rangeradmin@123）或者其他具有Ranger管理员权限用户重新登录。用户及默认密码请参考[MRS集群用户账号一览表](https://support.huaweicloud.com/usermanual-mrs/admin_guide_000239.html)。
      
   
   4. 单击Hive组件对应行的导出按钮![](https://support.huaweicloud.com/usermanual-mrs/zh-cn_image_0000001925500989.png)，导出鉴权策略。
      图2导出鉴权策略   
      ![](https://support.huaweicloud.com/usermanual-mrs/zh-cn_image_0000001879422120.png "点击放大") 
   
   5. 单击"Export"，导出后会生成本地的JSON格式的策略文件。
      图3导出Hive鉴权策略   
      ![](https://support.huaweicloud.com/usermanual-mrs/zh-cn_image_0000001879581984.png "点击放大") 
   
   
   
   
 
 #### 创建并配置RDS实例
1. 登录RDS管理控制台，购买RDS实例，具体操作请参考[购买实例](https://support.huaweicloud.com/usermanual-rds-mysql/rds_10_0028.html)。
   
   - 为了保证集群和MySQL数据库的网络访问，建议该实例与MRS集群的虚拟私有云和子网一致。
   
   - RDS实例的安全组入方向规则需要放通MySQL（默认为"3306"）数据库端口。
   
   - Ranger仅支持对接RDS服务MySQL数据库，版本号为：**MySQL 5.7.x、MySQL 8.0**。
   
   
   
   
2. 在RDS管理控制台，选择"实例管理"，选择MRS数据连接使用的RDS实例所在行的操作列的"登录"，以**root** 用户登录该实例。
   
   图4登录RDS实例   
   ![](https://support.huaweicloud.com/usermanual-mrs/zh-cn_image_0000002150638024.png "点击放大")
   
   
3. 在实例"首页"即可单击"新建数据库"创建新的数据库。 
   ![](https://support.huaweicloud.com/usermanual-mrs/public_sys-resources/warning_3.0-zh-cn.png)
   - 如果没有创建新的数据库，会导致MRS配置数据连接失败。
   
   - 不同模式的MRS集群对接同一个RDS时，必须新建数据库。
    
   图5新建数据库   
   ![](https://support.huaweicloud.com/usermanual-mrs/zh-cn_image_0000002186241809.png "点击放大")
   
   
4. 在页面顶部选择"账号管理 \> 用户管理"。 
   - 对于MRS 3.x之前版本，当用户选择的数据连接为"RDS服务MySQL数据库"时，请确保使用的数据库用户为**root** 用户。如果为非**root** 用户，请参考[步骤 5]\~[步骤 6]新建用户并为该用户进行赋权。
   
   - 对于MRS 3.x及之后版本，当用户选择的数据连接为"RDS服务MySQL数据库"时，数据库用户不允许为**root** 用户，请参考[步骤 5]\~[步骤 6]新建用户并为该用户进行赋权。
   
   
   
   
5. 单击"新建用户"，创建一个非**root** 用户，并勾选"全局权限"中所有的权限，其他参数根据实际需要配置。
   
   如果是配置Ranger外置RDS数据连接，可以只选择SELECT、INSERT、CREATE、RELOAD、CREATE USER和GRANT权限。
   图6创建用户   
   ![](https://support.huaweicloud.com/usermanual-mrs/zh-cn_image_0000001913427400.png "点击放大")
   
   
6. 在页面顶部选择"SQL操作 \> SQL查询"，在"库名"处切换对应数据库，然后执行如下SQL命令为该数据库用户进行赋权，其中${db_name}与${db_user}为MRS待连接的数据库名和新建的用户名。
   
   ```
   grant all privileges on ${db_name}.* to '${db_user}'@'%' with grant option;
   grant reload on *.* to '${db_user}'@'%' with grant option;
   flush privileges;
   ```
   图7为数据库用户赋权   
   ![](https://support.huaweicloud.com/usermanual-mrs/zh-cn_image_0000001913267492.png "点击放大")
   
   
 
 #### 为已有MRS集群创建RDS数据连接
该步骤指导用户为当前已有的MRS集群创建RDS数据连接。
1. 登录[MRS管理控制台](https://console.huaweicloud.com/mrs/)。
2. 在导航栏选择"数据连接"。
3. 单击"新建数据连接 "。
4. 参考[表1]配置相关参数。
   
    表1数据连接 
   | 参数    | 示例       | 说明                                                                                                                                                                                                                                                                                                         |
   |:---|:---|:---|
   | 类型    | -        | 选择外部源连接的类型。 - RDS服务PostgreSQL数据库：安装了Hive组件的集群支持连接该类型数据库。  - RDS服务MySQL数据库：安装了Hive或Ranger组件的集群支持连接该类型数据库。   |
   | 名称    | newtest  | 数据连接的名称。                                                                                                                                                                                                                                                                                                   |
   | 数据库实例 | -        | RDS服务数据库实例，该实例需要先在RDS服务创建后在此处引用，且已创建数据库，具体请参考[创建并配置RDS实例]。单击"查看数据库实例"查看已创建的实例。                                                                                                                                                                                        |
   | 数据库   | dataname | 待连接的数据库的名称。                                                                                                                                                                                                                                                                                                |
   | 用户名   | datauser | 登录待连接的数据库的用户名。                                                                                                                                                                                                                                                                                             |
   | 密码    | -        | 登录待连接的数据库的密码。                                                                                                                                                                                                                                                                                              |
      
   当用户选择的数据连接为"RDS服务MySQL数据库"时，请确保使用的数据库用户为**root** 用户。如果为非**root** 用户，请参考[创建并配置RDS实例]操作。
   
   
5. 单击"确定"完成创建。
 
#### 配置Ranger数据连接
1. 登录[MRS管理控制台](https://console.huaweicloud.com/mrs/)。
2. 单击集群名称进入集群详情页面。
3. 单击"数据连接"右侧的"单击管理"，进入数据连接配置界面。
4. 单击"配置数据连接"，并配置相关参数： 
   - 类型：Ranger
   
   - 模块类型：Ranger元数据
   
   - 连接类型：RDS服务MySQL数据库
   
   - 连接实例：请选择已创建的到RDS服务MySQL数据库的实例，如需创建新的数据连接，请参考[为已有MRS集群创建RDS数据连接]。
   
   
   
   
5. 勾选"我已经阅读上述信息，并了解具体影响。"并单击"测试"。
6. 测试成功后，单击"确定"完成数据连接配置。
7. 登录MRS集群Manager界面，具体请参见[访问MRS集群Manager](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0128.html)。
8. 选择"集群 \> 服务 \> Ranger"，进入Ranger服务概览页面。
9. 单击"更多 \> 重启服务"或"更多 \> 滚动重启服务"。 
   重启服务会造成业务中断，滚动重启可以尽量减少或者不影响业务运行。
   重启Ranger组件会影响所有受Ranger控制组件的权限，可能影响业务的正常运行，请在集群空闲或业务量较少时执行重启。重启Ranger组件前，Ranger中的策略依然生效。
   图8重启服务   
   ![](https://support.huaweicloud.com/usermanual-mrs/zh-cn_image_0000001925621321.png)
   
   
10. 启用需要鉴权的组件的Ranger鉴权。此处以Hive组件为例。 
    当前MRS 3.1.x及之后版本集群支持Ranger鉴权的组件为: HDFS、HBase、Hive、Spark、Impala、Storm、Kafka、HetuEngine、Yarn组件。
    1. 登录集群Manager页面，具体请参见[访问MRS集群Manager](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0128.html)，选择"集群 \> 服务 \> *服务名称*"。
    
    2. 在服务"概览"页面右上角单击"更多 \> 启用Ranger鉴权"。
       图9启用Ranger鉴权   
       ![](https://support.huaweicloud.com/usermanual-mrs/zh-cn_image_0000001879581996.png) 
     
    
    
11. 使用具有Ranger管理员权限的用户登录Ranger WebUI界面，单击Hive组件对应行的导入按钮![](https://support.huaweicloud.com/usermanual-mrs/zh-cn_image_0000001879581988.png)。
    
    图10单击导入鉴权策略按钮   
    ![](https://support.huaweicloud.com/usermanual-mrs/zh-cn_image_0000001879422124.png "点击放大")
    
    
12. 配置导入参数。 
    - Select file：选择[4.e]中下载的鉴权策略文件。
    
    - Merge If Exist Policy：勾选。
    
    
    图11导入鉴权策略   
    ![](https://support.huaweicloud.com/usermanual-mrs/zh-cn_image_0000001879422128.png "点击放大")
    
    
13. 重启启用Ranger鉴权的组件。 
    1. 登录MRS集群Manager界面，具体请参见[访问MRS集群Manager](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0128.html)。
    
    2. 选择"集群 \> 服务 \> *服务名称*"，进入服务概览页面。
    
    3. 选择"更多 \> 重启服务"或"更多 \> 滚动重启服务"。
       图12重启服务   
       ![](https://support.huaweicloud.com/usermanual-mrs/zh-cn_image_0000001925500981.png)
       重启服务会造成业务中断，滚动重启可以尽量减少或者不影响业务运行。
       
    
    
    
    
 
#### Ranger元数据外置验证
1. MRS 3.5.0-LTS之前版本，未启用Kerberos认证的集群Ranger数据源默认为集群Unix用户，如果需修改数据源为Manager Ldap用户，请执行以下操作： 
   1. 登录MRS集群Manager界面，具体请参见[访问MRS集群Manager](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0128.html)，选择"集群 \> 服务 \> Ranger \> 配置 \> 全部配置 \> UserSync（角色） \> 自定义"，添加以下自定义参数设置Ranger数据源为Manager Ldap用户：
      - MRS 3.1.0之后版本，在"ranger.usersync.config.expandor"参数配置中添加"ranger.usersync.sync.source"值为"ldap"和"ranger.usersync.cookie.enabled"值为"false"，如下图所示： ![](https://support.huaweicloud.com/usermanual-mrs/zh-cn_image_0000002280369946.png "点击放大")
        
      
      - MRS 3.1.0版本，在"ranger.ugsync.site.customized.configs"参数配置中添加"ranger.usersync.sync.source"值为"ldap"和"ranger.usersync.cookie.enabled"值为"false"。
       
   
   2. 单击"保存"保存配置。
   
   3. 在Ranger服务"概览"页面右上角单击"更多"，选择"同步配置"。 ![](https://support.huaweicloud.com/usermanual-mrs/zh-cn_image_0000002315099437.png "点击放大")
      
   
   4. 在Ranger实例页面，勾选"UserSync"实例，选择"更多 \> 重启实例"。 ![](https://support.huaweicloud.com/usermanual-mrs/zh-cn_image_0000002280426718.png "点击放大")
      
   
   5. 在Ranger服务"概览"页面，单击"RangerAdmin"，查看"Settings \> Users/Groups/Roles"页面是否有Ldap用户。
   
   
   
   
2. 确保Hive已启用Ranger鉴权。 
   在Manager界面，选择"集群 \> 服务 \> Hive"，在页面右上角选择"更多"，查看Hive是否启用了Ranger鉴权，如果未启用需选择"启用Ranger鉴权"启用Ranger鉴权功能。
   
   
3. 在集群Manager界面，选择"系统 \> 权限 \> 用户"，添加一个人机用户，例如"test"，开启Kerberos认证的集群的用户需具有创建Hive表的权限（即该用户至少属于"hive"和"hadoop"用户组）。
4. 登录安装了Hive客户端的节点，执行以下命令： 
   切换至客户端安装目录：
   ```
   cd 客户端安装目录
   ```
   加载环境变量：
   ```
   source bigdata_env
   ```
   认证用户，未开启Kerberos认证的集群请跳过此操作：
   ```
   kinit 业务用户
   ```
   
   
5. 执行以下命令登录Hive客户端： 
   - 开启Kerberos认证的集群：
     ```
     beeline
     ```
     
   
   - 未开启Kerberos认证的集群：
     ```
     beeline -n 业务用户
     ```
     
   
   
   
   
6. 执行以下命令创建Hive表并向表中插入数据：
   
   创建表：
   ```
   create table user_info(id string,name string,gender string,age int,addr string);
   ```
   插入数据：
   ```
   insert into table user_info(id,name,gender,age,addr) values("12005000201","A","man",19,"city");
   ```
   
   
7. 在集群Manager界面，选择"系统 \> 权限 \> 用户"，再添加一个人机用户，例如"test1"，开启Kerberos认证的集群的用户需仅具有"hive"用户组权限。
8. 使用**rangeradmin** （开启Kerberos认证的集群）或**admin** （未开启Kerberos认证的集群）用户登录Ranger WebUI页面，为该用户添加具有查询[步骤 6]创建的表的权限。
   
   1. 在Service Manager页面，单击"Hadoop SQL"中的"Hive"，单击"Add New Policy"添加Hive权限控制策略，配置以下参数并单击"Add"：
      - Policy Name：输入策略名称。
      
      - database：设置为"default"。
      
      - table：设置为需要访问的表名称，例如"user_info"。
      
      - column：设置为"\*"。
      
      - 在"Allow Conditions"的"Select User"列勾选需要授权的用户，例如"test1"，在"Permissions"列勾选"select"权限。
       
   
   2. 开启Kerberos认证的集群，还需返回Service Manager页面，单击"HDFS"中的"hacluster"，单击"Add New Policy"添加HDFS权限控制策略，配置以下参数并单击"Add"：
      - Policy Name：输入策略名称。
      
      - Resource Path：输入要访问的表在HDFS中的具体路径，例如"/user/hive/warehouse/user_info"。
      
      - 在"Allow Conditions"的"Select User"列勾选需要授权的用户，例如"test1"，在"Permissions"列勾选"Read"和"Execute"权限。
       
   
   
   
   
9. 使用[步骤 7]创建的用户登录Hive客户端，并执行以下命令查询[步骤 6]创建的表的数据：
   
   **select \* from** *user_info* **;**
   如果能成功查询表数据，则表示Ranger元数据外置到RDS MySQL成功。
   图13查询Hive表数据成功   
   ![](https://support.huaweicloud.com/usermanual-mrs/zh-cn_image_0000002271794426.png "点击放大")
   
   
 
