文档首页/ MapReduce服务 MRS/ 最佳实践/ MRS集群管理/ 配置元数据外置的MRS存算分离集群
更新时间:2025-08-14 GMT+08:00

配置元数据外置的MRS存算分离集群

应用场景

本指导为您演示如何新创建将Hive和Ranger元数据外置到RDS服务MySQL数据库中的MRS存算分离集群。

本章节操作仅适用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普通账号委托及云服务委托,详细操作请参见创建委托

步骤1:创建MRS集群

  1. 创建并购买一个包含有Guardian、Hive、Ranger、Spark组件的MRS集群,详情请参见购买自定义集群

    本文以购买的MRS 3.5.0-LTS版本的集群为例,集群已开启Kerberos认证。

  2. 集群购买成功后,在MRS集群的任一节点内,安装集群客户端,具体操作可参考安装并使用集群客户端

    例如客户端安装目录为“/opt/client”。

步骤2:创建并配置RDS实例

  1. 登录RDS管理控制台,购买RDS实例,具体操作请参考购买实例

    • 为了保证集群和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.0PostgreSQL14
    • 本操作以购买MySQL 8.0的RDS实例为例。

  2. 在RDS管理控制台,选择“实例管理”,选择MRS数据连接使用的RDS实例所在行的操作列的“登录”,以root用户登录该实例。

    图1 登录RDS实例

  3. 在实例“首页”即可单击“新建数据库”创建新的数据库。

    如果没有创建新的数据库,会导致MRS配置数据连接失败。

    图2 新建数据库

  4. 在页面顶部选择“账号管理 > 用户管理”。

    当用户选择的数据连接为“RDS服务MySQL数据库”时,数据库用户不允许为root用户,请参考4~6新建用户并为该用户进行赋权。

  5. 单击“新建用户”,创建一个非root用户,并勾选“全局权限”中所有的权限。

    图3 创建用户

  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 为数据库用户赋权

步骤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鉴权

  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集群用户账号一览表
    5. 单击Hive组件对应行的导出按钮,导出鉴权策略。
      图6 导出鉴权策略
    6. 单击“Export”,导出后会生成本地的JSON格式的策略文件。
      图7 导出Hive鉴权策略

为已有MRS集群创建RDS数据连接。

  1. 登录MRS控制台,在导航栏选择“数据连接”。
  2. 单击“新建数据连接 ”,参考表1配置相关参数。

    表1 数据连接

    参数

    示例

    说明

    类型

    RDS服务MySQL数据库

    选择外部源连接的类型,即步骤2:创建并配置RDS实例创建的RDS实例类型。

    名称

    newtest

    数据连接的名称。

    数据库实例

    -

    RDS服务数据库实例,该实例需要先在RDS服务创建后在此处引用,且已创建数据库,具体请参考步骤2:创建并配置RDS实例。可单击“查看数据库实例”查看已创建的实例。

    数据库

    dataname

    待连接的数据库的名称。

    用户名

    datauser

    登录待连接的数据库的用户名。

    密码

    -

    登录待连接的数据库的用户密码。

  3. 单击“确定”完成创建。

配置Hive和Ranger数据连接。

  1. 在MRS现有集群列表中,单击集群名称进入集群详情页面。
  2. 单击“数据连接”右侧的“单击管理”,进入数据连接配置界面,单击Hive和Ranger所在行的“解绑”,解绑本地数据库。
  3. 配置Ranger数据连接。

    1. 单击“配置数据连接”,配置以下相关参数:
      • 类型:Ranger
      • 模块类型:Ranger元数据
      • 连接类型:RDS服务MySQL数据库
      • 连接实例:选择MRS集群与RDS服务MySQL数据库连接名称,该连接必须先创建才能在此处引用。即8创建的数据连接名称。
    2. 勾选“我已经阅读上述信息,并了解具体影响。”并单击“测试”。
    3. 测试连接成功后,单击“确定”完成Ranger数据连接配置。
    图8 配置Ranger数据连接

  4. 配置Hive数据连接。

    1. 再次单击“配置数据连接”,配置以下相关参数:
      • 类型:Hive
      • 模块类型:Hive元数据
      • 连接类型:RDS服务MySQL数据库
      • 连接实例:选择MRS集群与RDS服务MySQL数据库连接名称,该连接必须先创建才能在此处引用。即8创建的数据连接名称。
    2. 单击“测试”,测试此数据连接和集群的连通性。
    3. 连接成功后单击“确定” 完成Hive数据连接配置。

  5. (可选)如果参考6导出了已有的策略,需执行以下操作导入,以Hive为例:

    1. 登录Ranger WebUI界面,单击Hive组件对应行的导入按钮
      图9 单击导入鉴权策略按钮
    2. 配置导入参数,并单击“Import”导入策略文件。
      • Select file:选择6.f中下载的鉴权策略文件。
      • Merge If Exist Policy:勾选。
      图10 导入鉴权策略

  6. 启用HDFS、Hive、Spark、Yarn组件的Ranger鉴权功能。

    1. 登录FusionInsight Manager页面,选择“集群 > 服务 > 服务名称”。
    2. 在服务“概览”页面右上角单击“更多 > 启用Ranger鉴权”。
      图11 启用Ranger鉴权

为MRS集群绑定云服务委托。

  1. 登录MRS控制台,在导航栏选择“现有集群”。
  2. 单击集群名称,进入集群详情页面。
  3. 在集群详情页的“概览”页签,单击“IAM用户同步”右侧的“同步”进行IAM用户同步。
  4. 在集群详情页的“概览”页签,单击委托右侧的“管理委托”选择已创建的云服务委托名称。

为Guardian组件配置访问OBS权限及开启Hive级联授权功能。

  1. 在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普通账号委托名称。

  2. 单击“保存”,保存配置。
  3. 在FusionInsight Manager首页,选择“集群 > 服务 > Ranger > 配置”。
  4. 在搜索框中搜索参数“ranger.ext.authorization.cascade.enable”,修改该参数值为“true”。

  5. 单击“保存”,保存配置。
  6. 单击主页,在页面右上方选择“更多 > 重启配置过期的实例”,根据界面提示重启所有配置过期的服务实例。
  7. 如果需要通过MRS管理控制台提交作业,使用omm用户登录主OMS节点,执行以下命令刷新内置客户端配置:

    sh /opt/executor/bin/refresh-client-config.sh

配置回收站清理策略。

  1. 登录OBS控制台。
  2. 选择“并行文件系统”,单击已创建的文件系统名称。
  3. 选择“数据管理> 生命周期规则”,单击“创建”,创建“/user/.Trash”目录的生命周期规则。

    配置集群使用存算分离方案后,必须配置相关目录的生命周期策略,否则会有存储空间被占满以及增加存储资源费用的风险,关于OBS更多计费说明请参考OBS计费概述

    表2 生命周期规则创建参数

    参数名称

    描述

    示例

    状态

    是否启用本条生命周期规则。

    启用

    规则名称

    规则名称,可自定义,用于识别不同的生命周期配置。

    rule-test

    前缀

    生命周期规则适用的对象前缀,MRS集群组件数据回收站目录为“/user/.Trash”。

    user/.Trash

    转换为低频访问存储天数

    指定在对象最后一次更新后多少天,受规则影响的对象将转换为低频访问存储。至少设置为30天。

    30天

    转换为归档存储天数

    指定在对象最后一次更新后多少天,受规则影响的对象将转换为归档存储。若同时设置转换为低频访问存储和转换为归档存储,则转换为归档存储的时间要比转换为低频访问存储的时间至少长30天。若单独设置转换为归档存储,则没有时间限制。

    31天

    文件过期删除天数

    指定在对象最后一次更新后多少天,受规则影响的对象将过期并自动被OBS删除。过期时间必须大于前两个转换时间的最大值。

    32天

    碎片过期规则设置

    受规则影响的碎片将过期并自动被OBS删除。

    30天

  4. 单击“确定”,完成生命周期规则配置。

    若您需修改生命周期的内容,请单击该生命周期规则所在行右侧的“编辑”进行编辑;单击“禁用”,可以禁用该生命周期规则。单击“启用”,可启用该生命周期规则。

  5. 元数据外置成功后,可参考步骤4:元数据外置验证进行验证;Guardian对接OBS成功后,各组件访问OBS的详细操作请参见MRS集群服务对接OBS示例

步骤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 查询表信息成功

验证Ranger元数据外置是否成功。

  1. 在FusionInsight Manager界面,选择“系统 > 用户”,添加一个仅具有“hive”用户组权限的人机用户,例如“test1”。
  2. 使用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”权限。

  3. 使用6创建的用户登录Hive客户端,并执行以下命令查询4创建的表的数据:

    select * from user_info;

    如果能成功查询表数据,则表示Ranger元数据外置到RDS MySQL成功。

    图13 查询Hive表数据成功