配置Hive元数据存储至RDS
本章节指导用户将现有集群的Hive元数据切换为本地数据库或者RDS数据库中存储的元数据。该操作可以使多个MRS集群共用同一份元数据,且元数据不随集群的删除而删除,也能够避免集群迁移时Hive元数据的迁移。
创建并配置RDS实例
- 登录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.0和PostgreSQL14。
- 在RDS管理控制台,选择“实例管理”,选择MRS数据连接使用的RDS实例所在行的操作列的“更多 > 登录”,以root用户登录该实例。
图1 登录RDS实例
- 在实例“首页”即可单击“新建数据库”创建新的数据库。
如果没有创建新的数据库,会导致MRS配置数据连接失败。
图2 新建数据库
- 在页面顶部选择“账号管理 > 用户管理”。
- 单击“新建用户”,创建一个非root用户,并勾选“全局权限”中所有的权限。
如果是配置Ranger外置RDS数据连接,可以只选择SELECT、INSERT、CREATE、RELOAD、CREATE USER和GRANT权限。
图3 创建用户
- 在页面顶部选择“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数据连接。
- 登录MRS控制台,在导航栏选择“数据连接”。
- 单击“新建数据连接 ”。
- 参考表1配置相关参数。
表1 数据连接 参数
说明
类型
选择外部源连接的类型。
- RDS服务PostgreSQL数据库:安装了Hive组件的集群支持连接该类型数据库。
- RDS服务MySQL数据库:安装了Hive或Ranger组件的集群支持连接该类型数据库。
名称
数据连接的名称。
数据库实例
RDS服务数据库实例,该实例需要先在RDS服务创建后在此处引用,且已创建数据库,具体请参考创建并配置RDS实例。单击“查看数据库实例”查看已创建的实例。
数据库
待连接的数据库的名称。
用户名
登录待连接的数据库的用户名。
密码
登录待连接的数据库的密码。
当用户选择的数据连接为“RDS服务MySQL数据库”时,请确保使用的数据库用户为root用户。如果为非root用户,请参考创建并配置RDS实例操作。
- 单击“确定”完成创建。
配置Hive数据连接
该功能在MRS 3.0.5版本暂不支持。
- 登录MRS控制台,在导航栏选择“现有集群”。
- 单击集群名称,进入集群详情页面。
- 在集群详情页的“概览”页签,单击“数据连接”右侧的“单击管理”。
- 在“数据连接”页面显示集群已关联的数据连接,单击“解绑”可对已关联的数据连接进行删除。
- 若“数据连接”页面没有关联连接,单击“配置数据连接”进行增加。
一种模块类型只能配置一个数据连接,如在Hive元数据上配置了数据连接后,不能再配置其他的数据连接。当没有可用的模块类型时,“配置数据连接”按钮不可用。
表2 配置Hive数据连接 参数
说明
组件名称
Hive
模块类型
Hive元数据
连接类型
- RDS服务PostgreSQL数据库(1.9.x版本支持)
- RDS服务MySQL数据库
- 本地数据库
连接实例
当“连接类型”参数选择“RDS服务PostgreSQL数据库”或“RDS服务MySQL数据库”时有效。选择MRS集群与RDS服务数据库连接名称,该连接必须先创建才能在此处引用。可单击“创建数据连接”进行创建,具体请参考为已有MRS集群创建RDS数据连接。
图5 配置数据连接
- 单击“测试”,测试此数据连接和集群的连通性。
- 连接成功后单击“确定” 完成配置数据连接。
- 上传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/”目录下。
- 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
- 在集群详情页面,选择“组件管理 > Hive”,在服务详情页面,选择“更多 > 重启服务”,单击“确定”重启Hive服务。
- 若未同步IAM用户,需在集群详情页的“概览”页签,单击“IAM用户同步”右侧的“同步”进行IAM用户同步再重启Hive服务。
- 重启Hive服务后,Hive会在指定的数据库下创建Hive必须的数据库表(如表已经存在则不会创建)。