更新时间:2025-08-09 GMT+08:00

配置Ranger元数据存储至RDS

本章节旨在指导用户将现有集群的Ranger元数据切换为RDS数据库中存储的元数据。该操作可以使多个MRS集群共用同一份元数据,且元数据不随集群的删除而删除,也能够避免集群迁移时Ranger元数据的迁移。

约束与限制

多个MRS集群对接同一个RDS且共用一份元数据时,需保证集群模式相同。

停用集群组件Ranger鉴权

该操作仅在MRS 3.1.0及之后版本需要执行。

  1. 登录MRS集群Manager界面。

    登录集群Manager界面请参考访问MRS集群Manager

  2. 选择“集群 > 服务 > 服务名称”。

    当前MRS 3.1.x及之后版本集群支持Ranger鉴权的组件为: HDFS、HBase、Hive、Spark、Impala、Yarn、Kafka、HetuEngine组件。

  3. 在服务“概览”页面右上角单击“更多 > 停用Ranger鉴权”,如果“停用Ranger鉴权”是灰色,则表示未开启Ranger鉴权无需停用Ranger鉴权,如图1所示。

    图1 停用Ranger鉴权

  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集群用户账号一览表

    4. 单击Hive组件对应行的导出按钮,导出鉴权策略。
      图2 导出鉴权策略
    5. 单击“Export”,导出后会生成本地的JSON格式的策略文件。
      图3 导出Hive鉴权策略

创建并配置RDS实例

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

    • 为了保证集群和MySQL数据库的网络访问,建议该实例与MRS集群的虚拟私有云和子网一致。
    • RDS实例的安全组入方向规则需要放通MySQL(默认为“3306”)数据库端口。
    • Ranger仅支持对接RDS服务MySQL数据库,版本号为:MySQL 5.7.x、MySQL 8.0

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

    图4 登录RDS实例

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

    • 如果没有创建新的数据库,会导致MRS配置数据连接失败。
    • 不同模式的MRS集群对接同一个RDS时,必须新建数据库。
    图5 新建数据库

  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 创建用户

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

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

该步骤指导用户为当前已有的MRS集群创建RDS数据连接。

  1. 登录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管理控制台
  2. 单击集群名称进入集群详情页面。
  3. 单击“数据连接”右侧的“单击管理”,进入数据连接配置界面。
  4. 单击“配置数据连接”,并配置相关参数:

    • 类型:Ranger
    • 模块类型:Ranger元数据
    • 连接类型:RDS服务MySQL数据库
    • 连接实例:请选择已创建的到RDS服务MySQL数据库的实例,如需创建新的数据连接,请参考为已有MRS集群创建RDS数据连接

  5. 勾选“我已经阅读上述信息,并了解具体影响。”并单击“测试”。
  6. 测试成功后,单击“确定”完成数据连接配置。
  7. 登录MRS集群Manager界面,具体请参见访问MRS集群Manager
  8. 选择“集群 > 服务 > Ranger”,进入Ranger服务概览页面。
  9. 单击“更多 > 重启服务”或“更多 > 滚动重启服务”。

    重启服务会造成业务中断,滚动重启可以尽量减少或者不影响业务运行。

    重启Ranger组件会影响所有受Ranger控制组件的权限,可能影响业务的正常运行,请在集群空闲或业务量较少时执行重启。重启Ranger组件前,Ranger中的策略依然生效。
    图8 重启服务

  10. 启用需要鉴权的组件的Ranger鉴权。此处以Hive组件为例。

    当前MRS 3.1.x及之后版本集群支持Ranger鉴权的组件为: HDFS、HBase、Hive、Spark、Impala、Storm、Kafka、HetuEngine、Yarn组件。
    1. 登录集群Manager页面,选择“集群 > 服务 > 服务名称”。
    2. 在服务“概览”页面右上角单击“更多 > 启用Ranger鉴权”。
      图9 启用Ranger鉴权

  11. 使用具有Ranger管理员权限的用户登录Ranger WebUI界面,单击Hive组件对应行的导入按钮

    图10 单击导入鉴权策略按钮

  12. 配置导入参数。

    • Select file:选择4.e中下载的鉴权策略文件。
    • Merge If Exist Policy:勾选。
    图11 导入鉴权策略

  13. 重启启用Ranger鉴权的组件。

    1. 登录MRS集群Manager界面,具体请参见访问MRS集群Manager
    2. 选择“集群 > 服务 > 服务名称”,进入服务概览页面。
    3. 选择“更多 > 重启服务”或“更多 > 滚动重启服务”。
      图12 重启服务

      重启服务会造成业务中断,滚动重启可以尽量减少或者不影响业务运行。

Ranger元数据外置验证

  1. MRS 3.5.0-LTS之前版本,未启用Kerberos认证的集群Ranger数据源默认为集群Unix用户,如果需修改数据源为Manager Ldap用户,请执行以下操作:

    1. 登录MRS集群Manager界面,具体请参见访问MRS集群Manager,选择“集群 > 服务 > Ranger > 配置 > 全部配置 > UserSync(角色) > 自定义”,添加以下自定义参数设置Ranger数据源为Manager Ldap用户:
      • MRS 3.1.0之后版本,在“ranger.usersync.config.expandor”参数配置中添加“ranger.usersync.sync.source”值为“ldap”和“ranger.usersync.cookie.enabled”值为“false”,如下图所示:

      • MRS 3.1.0版本,在“ranger.ugsync.site.customized.configs”参数配置中添加“ranger.usersync.sync.source”值为“ldap”和“ranger.usersync.cookie.enabled”值为“false”。
    2. 单击“保存”保存配置。
    3. 在Ranger服务“概览”页面右上角单击“更多”,选择“同步配置”。

    4. 在Ranger实例页面,勾选“UserSync”实例,选择“更多 > 重启实例”。

    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表数据成功