更新时间:2024-12-06 GMT+08:00

配置Hive元数据存储至RDS

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

创建并配置RDS实例

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

    • 为了保证集群和MySQL或PostgreSQL数据库的网络访问,建议该实例与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

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

    图1 登录RDS实例

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

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

    图2 新建数据库

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

    • 对于MRS 3.x之前版本,当用户选择的数据连接为“RDS服务MySQL数据库”时,请确保使用的数据库用户为root用户。如果为非root用户,请参考4~6新建用户并为该用户进行赋权。
    • 对于MRS 3.x及之后版本,当用户选择的数据连接为“RDS服务MySQL数据库”时,数据库用户不允许为root用户,请参考4~6新建用户并为该用户进行赋权。

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

    如果是配置Ranger外置RDS数据连接,可以只选择SELECT、INSERT、CREATE、RELOAD、CREATE USER和GRANT权限。

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

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

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

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

    表1 数据连接

    参数

    示例

    说明

    类型

    -

    选择外部源连接的类型。

    • RDS服务PostgreSQL数据库:安装了Hive组件的集群支持连接该类型数据库。
    • RDS服务MySQL数据库:安装了Hive或Ranger组件的集群支持连接该类型数据库。

    名称

    newtest

    数据连接的名称。

    数据库实例

    -

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

    数据库

    dataname

    待连接的数据库的名称。

    用户名

    datauser

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

    密码

    -

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

    当用户选择的数据连接为“RDS服务MySQL数据库”时,请确保使用的数据库用户为root用户。如果为非root用户,请参考创建并配置RDS实例操作。

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

配置Hive数据连接

该功能在MRS 3.0.5版本暂不支持。

  1. 登录MRS控制台,在导航栏选择“现有集群”。
  2. 单击集群名称,进入集群详情页面。
  3. 在集群详情页的“概览”页签,单击“数据连接”右侧的“单击管理”。
  4. 在“数据连接”页面显示集群已关联的数据连接,单击“解绑”可对已关联的数据连接进行删除。
  5. 若“数据连接”页面没有关联连接,单击“配置数据连接”进行增加。

    一种模块类型只能配置一个数据连接,如在Hive元数据上配置了数据连接后,不能再配置其他的数据连接。当没有可用的模块类型时,“配置数据连接”按钮不可用。

    表2 配置Hive数据连接

    参数

    说明

    组件名称

    Hive

    模块类型

    Hive元数据

    连接类型

    • RDS服务PostgreSQL数据库(1.9.x版本支持)
    • RDS服务MySQL数据库
    • 本地数据库

    连接实例

    当“连接类型”参数选择“RDS服务PostgreSQL数据库”或“RDS服务MySQL数据库”时有效。选择MRS集群与RDS服务数据库连接名称,该连接必须先创建才能在此处引用。可单击“创建数据连接”进行创建,具体请参考为已有MRS集群创建RDS数据连接

    图5 配置数据连接

  6. 单击“测试”,测试此数据连接和集群的连通性。
  7. 连接成功后单击“确定” 完成配置数据连接。
  8. 上传PostgreSQL或MySQL对应的开源驱动包到所有MetaStore实例所在节点中,替换集群已有的驱动包:

    • PostgreSQL:将驱动包“postgresql-42.2.5.jar”上传至所有MetaStore实例节点“${BIGDATA_HOME}/third_lib/Hive”目录下(开源驱动包下载地址:https://repo1.maven.org/maven2/org/postgresql/postgresql/42.2.5/)。
    • MySQL:进入MySQL官网(https://www.mysql.com/),选择“Downloads > Community > MySQL Connectors > Connector/J”下载对应版本的驱动包,将MySQL对应版本的驱动包上传至所有Metastore实例节点“/opt/Bigdata/FusionInsight_HD_*/install/FusionInsight-Hive-*/hive-*/lib/”目录下。

  9. MRS 3.3.0及之后版本如果需要将Hive元数据存储到RDS PostgreSQL数据库中,还需要登录到所有的MetaStore实例节点执行以下命令替换SQL文件内容:

    sed -i 's#PRIMARY KEY ("MAPPING_ID"),#PRIMARY KEY (MAPPING_ID),#g' $BIGDATA_HOME/FusionInsight_Current/*_MetaStore/install/hive-3.1.0/scripts/metastore/upgrade/postgres/hive-schema-3.1.0.postgres.sql

    sed -i 's#UNIQUE ("CAT_NAME", "DB_NAME", "TBL_NAME")#UNIQUE (CAT_NAME, DB_NAME, TBL_NAME)#g' $BIGDATA_HOME/FusionInsight_Current/*_MetaStore/install/hive-3.1.0/scripts/metastore/upgrade/postgres/hive-schema-3.1.0.postgres.sql

  10. 在集群详情页面,选择“组件管理 > Hive”,在服务详情页面,选择“更多 > 重启服务”,单击“确定”重启Hive服务。

    • 若未同步IAM用户,需在集群详情页的“概览”页签,单击“IAM用户同步”右侧的“同步”进行IAM用户同步再重启Hive服务。
    • 重启Hive服务后,Hive会在指定的数据库下创建Hive必须的数据库表(如表已经存在则不会创建)。