
# 配置元数据外置的MRS存算分离集群
#### 应用场景
本指导为您演示如何新创建将Hive和Ranger元数据外置到RDS服务MySQL数据库中的MRS存算分离集群。
![](https://support.huaweicloud.com/bestpractice-mrs/public_sys-resources/note_3.0-zh-cn.png)
本章节操作仅适用MRS 3.3.0-LTS及之后版本。
#### 操作流程
本实践操作流程如下所示：
1. [步骤1：创建MRS集群]：创建一个包含有Guardian、Hive、Ranger、Spark组件的MRS集群。
2. [步骤2：创建并配置RDS实例]：创建并配置RDS MySQL实例。
3. [步骤3：配置MRS数据连接及Guardian对接OBS]：配置Hive和Ranger数据连接及Guardian对接OBS。
4. [步骤4：元数据外置验证]：元数据外置操作完成后，验证Hive和Ranger元数据是否成功外置到RDS MySQL数据库中。
 
#### 前提条件
- 已创建待对接的OBS并行文件系统，例如"guardian-obs"。
- 已创建IAM普通账号委托及云服务委托，详细操作请参见[创建委托](https://support.huaweicloud.com/usermanual-mrs/mrs_01_300419.html#section4)。
 
 #### 步骤1：创建MRS集群
1. 创建并购买一个包含有Guardian、Hive、Ranger、Spark组件的MRS集群，详情请参见[购买自定义集群](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0513.html)。
   
   ![](https://support.huaweicloud.com/bestpractice-mrs/public_sys-resources/note_3.0-zh-cn.png)
   本文以购买的MRS 3.5.0-LTS版本的集群为例，集群已开启Kerberos认证。
   
   
2. 集群购买成功后，在MRS集群的任一节点内，安装集群客户端，具体操作可参考[安装并使用集群客户端](https://support.huaweicloud.com/usermanual-mrs/mrs_01_0089.html)。
   
   例如客户端安装目录为"/opt/client"。
   
   
 
 #### 步骤2：创建并配置RDS实例
1. 登录RDS管理控制台，购买RDS实例，具体操作请参考[购买实例](https://support.huaweicloud.com/usermanual-rds-mysql/rds_10_0028.html)。
   
   ![](https://support.huaweicloud.com/bestpractice-mrs/public_sys-resources/note_3.0-zh-cn.png)
   - 为了保证集群和MySQL或PostgreSQL数据库的网络访问，建议该实例与[步骤1：创建MRS集群]中的MRS集群的虚拟私有云和子网一致。
   
   - RDS实例的安全组入方向规则需要放通MySQL（默认为"3306"）和PostgreSQL（默认为"5432"）数据库端口。 例如，可通过在RDS控制台单击实例名称进入实例基本信息页面，在"网络信息"区域单击"安全组"处的"管理"，在弹出的页面单击安全组名称进入安全组控制台，在入方向规则页签中添加一个"协议端口"为TCP 3306，"源地址"为Hive的MetaStore实例所在的所有节点IP的规则。
     
   
   - Ranger仅支持对接RDS服务MySQL数据库，版本号为：**MySQL 5.7.x、MySQL 8.0**。
   
   - Hive支持对接RDS服务MySQL和PostgreSQL数据库，版本号为：**MySQL 5.7.x、MySQL 8.0** 和**PostgreSQL** **14**。
   
   - 本操作以购买MySQL 8.0的RDS实例为例。
    
   
   
2. 在RDS管理控制台，选择"实例管理"，选择MRS数据连接使用的RDS实例所在行的操作列的"登录"，以**root** 用户登录该实例。
   
   图1登录RDS实例   
   ![](https://support.huaweicloud.com/bestpractice-mrs/zh-cn_image_0000002238665785.png "点击放大")
   
   
3. 在实例"首页"即可单击"新建数据库"创建新的数据库。 
   ![](https://support.huaweicloud.com/bestpractice-mrs/public_sys-resources/note_3.0-zh-cn.png)
   如果没有创建新的数据库，会导致MRS配置数据连接失败。
   图2新建数据库   
   ![](https://support.huaweicloud.com/bestpractice-mrs/zh-cn_image_0000002203425620.png "点击放大")
   
   
4. 在页面顶部选择"账号管理 \> 用户管理"。
   
   ![](https://support.huaweicloud.com/bestpractice-mrs/public_sys-resources/note_3.0-zh-cn.png)
   当用户选择的数据连接为"RDS服务MySQL数据库"时，数据库用户不允许为**root** 用户，请参考[步骤 4]\~[步骤 6]新建用户并为该用户进行赋权。
   
   
5. 单击"新建用户"，创建一个非**root** 用户，并勾选"全局权限"中所有的权限。
   
   图3创建用户   
   ![](https://support.huaweicloud.com/bestpractice-mrs/zh-cn_image_0000002238665789.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;
   ```
   图4为数据库用户赋权   
   ![](https://support.huaweicloud.com/bestpractice-mrs/zh-cn_image_0000002238545625.png "点击放大")
   
   
 
 #### 步骤3：配置MRS数据连接及Guardian对接OBS
**停用集群组件Ranger鉴权。**
1. 登录MRS控制台，在现有集群列表中单击MRS集群名称进入集群概览页面。
2. 单击"集群管理页面"后的"前往 Manager"，在弹出的窗口中选择"EIP访问"并配置弹性IP信息。 
   首次访问时，可单击"管理弹性公网IP"，在弹性公网IP控制台购买一个弹性公网IP，购买成功后刷新弹性公网IP列表并选择。
   
   
3. 勾选确认信息后，单击"确定"，登录集群的FusionInsight Manager管理界面。 
   Manager登录用户名为**admin**，密码为购买集群时配置的用于登录Manager管理界面的"admin"用户的自定义密码。
   
   
4. 选择"集群 \> 服务 \> *服务名称* "。
   
   需停用HDFS、Hive、Spark、Yarn组件的Ranger鉴权功能。请根据集群实际组件进行操作，需停用集群中所有组件已启用的Ranger鉴权功能。
   
   
5. 在服务"概览"页面右上角单击"更多 \> 停用Ranger鉴权"，如果"停用Ranger鉴权"是灰色，则表示未开启Ranger鉴权无需停用Ranger鉴权，如[图5]所示。
   
   图5停用Ranger鉴权   
   ![](https://support.huaweicloud.com/bestpractice-mrs/zh-cn_image_0000002203425628.png)
   
   
6. （可选）如需使用已有鉴权策略请执行该步骤在Ranger Web页面导出已有组件的鉴权策略，切换Ranger元数据完成后可重新导入已有的鉴权策略。此处以Hive为例，导出后会生成本地的JSON格式的策略文件。
   
   1. 登录FusionInsight Manager页面。
   
   2. 选择"集群 \> 服务 \> Ranger"，进入Ranger服务概览页面。
   
   3. 单击"基本信息"区域中的"RangerAdmin"，进入Ranger WebUI界面。 admin用户在Ranger中的用户类型为"User"，如需查看所有管理页面，可单击右上角用户名后，选择"Log Out"，退出当前用户。
      
   
   4. 使用**rangeradmin** 用户（默认密码为Rangeradmin@123）或者其他具有Ranger管理员权限用户重新登录。用户及默认密码请参考[MRS集群用户账号一览表](https://support.huaweicloud.com/usermanual-mrs/admin_guide_000239.html)。
   
   5. 单击Hive组件对应行的导出按钮![](https://support.huaweicloud.com/bestpractice-mrs/zh-cn_image_0000002259207105.png)，导出鉴权策略。
      图6导出鉴权策略   
      ![](https://support.huaweicloud.com/bestpractice-mrs/zh-cn_image_0000002224167532.png "点击放大") 
   
   6. 单击"Export"，导出后会生成本地的JSON格式的策略文件。
      图7导出Hive鉴权策略   
      ![](https://support.huaweicloud.com/bestpractice-mrs/zh-cn_image_0000002259366993.png "点击放大") 
   
   
   
   
**为已有MRS集群创建RDS数据连接。**
7. 登录MRS控制台，在导航栏选择"数据连接"。
8. 单击"新建数据连接 "，参考[表1]配置相关参数。
   
    表1数据连接 
   | 参数    | 示例                | 说明                                                                                                                      |
   |:---|:---|:---|
   | 类型    | **RDS服务MySQL数据库** | 选择外部源连接的类型，即[步骤2：创建并配置RDS实例]创建的RDS实例类型。                                             |
   | 名称    | **newtest**       | 数据连接的名称。                                                                                                                |
   | 数据库实例 | -                 | RDS服务数据库实例，该实例需要先在RDS服务创建后在此处引用，且已创建数据库，具体请参考[步骤2：创建并配置RDS实例]。可单击"查看数据库实例"查看已创建的实例。 |
   | 数据库   | **dataname**      | 待连接的数据库的名称。                                                                                                             |
   | 用户名   | **datauser**      | 登录待连接的数据库的用户名。                                                                                                          |
   | 密码    | -                 | 登录待连接的数据库的用户密码。                                                                                                         |
      
   
   
9. 单击"确定"完成创建。
**配置Hive和Ranger数据连接。**
10. 在MRS现有集群列表中，单击集群名称进入集群详情页面。
11. 单击"数据连接"右侧的"单击管理"，进入数据连接配置界面，单击Hive和Ranger所在行的"解绑"，解绑本地数据库。
12. 配置Ranger数据连接。 
    1. 单击"配置数据连接"，配置以下相关参数：
       - 类型：Ranger
       
       - 模块类型：Ranger元数据
       
       - 连接类型：RDS服务MySQL数据库
       
       - 连接实例：选择MRS集群与RDS服务MySQL数据库连接名称，该连接必须先创建才能在此处引用。即[步骤 8]创建的数据连接名称。
        
    
    2. 勾选"我已经阅读上述信息，并了解具体影响。"并单击"测试"。
    
    3. 测试连接成功后，单击"确定"完成Ranger数据连接配置。
    
    
    图8配置Ranger数据连接   
    ![](https://support.huaweicloud.com/bestpractice-mrs/zh-cn_image_0000002204924410.png "点击放大")
    
    
13. 配置Hive数据连接。 
    1. 再次单击"配置数据连接"，配置以下相关参数：
       - 类型：Hive
       
       - 模块类型：Hive元数据
       
       - 连接类型：RDS服务MySQL数据库
       
       - 连接实例：选择MRS集群与RDS服务MySQL数据库连接名称，该连接必须先创建才能在此处引用。即[步骤 8]创建的数据连接名称。
        
    
    2. 单击"测试"，测试此数据连接和集群的连通性。
    
    3. 连接成功后单击"确定" 完成Hive数据连接配置。
    
    
    
    
14. （可选）如果参考[步骤 6]导出了已有的策略，需执行以下操作导入，以Hive为例：
    
    1. 登录Ranger WebUI界面，单击Hive组件对应行的导入按钮![](https://support.huaweicloud.com/bestpractice-mrs/zh-cn_image_0000002224327368.png)。
       图9单击导入鉴权策略按钮   
       ![](https://support.huaweicloud.com/bestpractice-mrs/zh-cn_image_0000002259207109.png "点击放大") 
    
    2. 配置导入参数，并单击"Import"导入策略文件。
       - Select file：选择[6.f]中下载的鉴权策略文件。
       
       - Merge If Exist Policy：勾选。
       
       
       图10导入鉴权策略   
       ![](https://support.huaweicloud.com/bestpractice-mrs/zh-cn_image_0000002224167548.png "点击放大") 
    
    
    
    
15. 启用HDFS、Hive、Spark、Yarn组件的Ranger鉴权功能。 
    1. 登录FusionInsight Manager页面，选择"集群 \> 服务 \> *服务名称*"。
    
    2. 在服务"概览"页面右上角单击"更多 \> 启用Ranger鉴权"。
       图11启用Ranger鉴权   
       ![](https://support.huaweicloud.com/bestpractice-mrs/zh-cn_image_0000002257251593.png) 
    
    
    
    
**为MRS集群绑定云服务委托。**
16. 登录MRS控制台，在导航栏选择"现有集群"。
17. 单击集群名称，进入集群详情页面。
18. 在集群详情页的"概览"页签，单击"IAM用户同步"右侧的"同步"进行IAM用户同步。
19. 在集群详情页的"概览"页签，单击委托右侧的"管理委托"选择已创建的云服务委托名称。
**为Guardian组件配置访问OBS权限及开启Hive级联授权功能。**
20. 在FusionInsight Manager界面，选择"集群 \> 服务 \> Guardian \> 配置 \> 全部配置"搜索并修改以下参数。 
    
    | 参数                                    | 示例                                                                                | 参数说明                                                                                                                                                     |
    |:---|:---|:---|
    | fs.obs.guardian.accesslabel.enabled   | true                                                                              | 是否开启使用Guardian对接OBS的access label。 对接OBS后，如需通过Ranger配置组件关于OBS相关路径的权限策略，需确保OBS服务已开启AccessLabel功能，若未开启，需手动开启，详细操作请联系OBS服务运维人员。 |
    | fs.obs.guardian.enabled               | true                                                                              | 是否开启使用Guardian。                                                                                                                                          |
    | fs.obs.delegation.token.providers     | com.huawei.mrs.dt.MRSDelegationTokenProvider和com.huawei.mrs.dt.GuardianDTProvider | delegation token生成器，当fs.obs.guardian.enabled=true时，需要同时配置com.huawei.mrs.dt.MRSDelegationTokenProvider和com.huawei.mrs.dt.GuardianDTProvider。              |
    | token.server.access.label.agency.name | agency-MRS-to-OBS                                                                 | 指定IAM委托的名字，即已创建的IAM普通账号委托名称。                                                                                                                             |
       
    
    
21. 单击"保存"，保存配置。
22. 在FusionInsight Manager首页，选择"集群 \> 服务 \> Ranger \> 配置"。
23. 在搜索框中搜索参数"ranger.ext.authorization.cascade.enable"，修改该参数值为"true"。 
    ![](https://support.huaweicloud.com/bestpractice-mrs/zh-cn_image_0000002222768342.png "点击放大")
    
    
24. 单击"保存"，保存配置。
25. 单击主页，在页面右上方选择"更多 \> 重启配置过期的实例"，根据界面提示重启所有配置过期的服务实例。
26. 如果需要通过MRS管理控制台提交作业，使用**omm** 用户登录主OMS节点，执行以下命令刷新内置客户端配置：
    
    **sh /opt/executor/bin/refresh-client-config.sh**
    
    
**配置回收站清理策略。**
27. 登录OBS控制台。
28. 选择"并行文件系统"，单击已创建的文件系统名称。
29. 选择"数据管理\> 生命周期规则"，单击"创建"，创建"/user/.Trash"目录的生命周期规则。 
    ![](https://support.huaweicloud.com/bestpractice-mrs/public_sys-resources/caution_3.0-zh-cn.png)
    **配置集群使用存算分离方案后，必须配置相关目录的生命周期策略，否则会有存储空间被占满以及增加存储资源费用的风险，关于OBS更多计费说明请参考[OBS计费概述](https://support.huaweicloud.com/price-obs/obs_42_0001.html)。**
    表2生命周期规则创建参数 
    | 参数名称        | 描述                                                                                                            | 示例          |
    |:---|:---|:---|
    | 状态          | 是否启用本条生命周期规则。                                                                                                 | 启用          |
    | 规则名称        | 规则名称，可自定义，用于识别不同的生命周期配置。                                                                                      | rule-test   |
    | 前缀          | 生命周期规则适用的对象前缀，MRS集群组件数据回收站目录为"/user/.Trash"。                                                                  | user/.Trash |
    | 转换为低频访问存储天数 | 指定在对象最后一次更新后多少天，受规则影响的对象将转换为低频访问存储。至少设置为30天。                                                                  | 30天         |
    | 转换为归档存储天数   | 指定在对象最后一次更新后多少天，受规则影响的对象将转换为归档存储。若同时设置转换为低频访问存储和转换为归档存储，则转换为归档存储的时间要比转换为低频访问存储的时间至少长30天。若单独设置转换为归档存储，则没有时间限制。 | 31天         |
    | 文件过期删除天数    | 指定在对象最后一次更新后多少天，受规则影响的对象将过期并自动被OBS删除。过期时间必须大于前两个转换时间的最大值。                                                     | 32天         |
    | 碎片过期规则设置    | 受规则影响的碎片将过期并自动被OBS删除。                                                                                         | 30天         |
       
    
    
30. 单击"确定"，完成生命周期规则配置。 
    若您需修改生命周期的内容，请单击该生命周期规则所在行右侧的"编辑"进行编辑；单击"禁用"，可以禁用该生命周期规则。单击"启用"，可启用该生命周期规则。
    
    
31. 元数据外置成功后，可参考[步骤4：元数据外置验证]进行验证；Guardian对接OBS成功后，各组件访问OBS的详细操作请参见[MRS集群服务对接OBS示例](https://support.huaweicloud.com/usermanual-mrs/mrs_01_248988.html)。
 
 #### 步骤4：元数据外置验证
**验证Hive元数据外置是否成功。**
1. 在FusionInsight Manager界面，选择"系统 \> 用户"，添加一个具有创建Hive表权限的人机用户，例如"test"。
2. 登录安装了Hive客户端的节点，执行以下命令： 
   **cd** *客户端安装目录*
   **source bigdata_env**
   **kinit** *业务用户*
   
   
3. 执行以下命令登录Hive客户端： 
   **beeline**
   
   
4. 执行以下命令创建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");**
   
   
5. 在对接的RDS MySQL实例的数据库的"SQL查询"页面执行以下命令： 
   **select \* from tbls;**
   如果查询结果中显示[步骤 4]创建的Hive表信息，则表示Hive元数据外置到RDS MySQL成功。
   图12查询表信息成功   
   ![](https://support.huaweicloud.com/bestpractice-mrs/zh-cn_image_0000002222364854.png "点击放大")
   
   
**验证Ranger元数据外置是否成功。**
6. 在FusionInsight Manager界面，选择"系统 \> 用户"，添加一个仅具有"hive"用户组权限的人机用户，例如"test1"。
7. 使用**rangeradmin** 用户登录Ranger WebUI页面，为该用户添加具有查询[步骤 4]创建的表的权限。
   
   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. 返回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"权限。
       
   
   
   
   
8. 使用[步骤 6]创建的用户登录Hive客户端，并执行以下命令查询[步骤 4]创建的表的数据：
   
   **select \* from** *user_info* **;**
   如果能成功查询表数据，则表示Ranger元数据外置到RDS MySQL成功。
   图13查询Hive表数据成功   
   ![](https://support.huaweicloud.com/bestpractice-mrs/zh-cn_image_0000002222371870.png "点击放大")
   
   
 
