更新时间:2022-12-14 GMT+08:00

Hive对接外置RDS

  • RDS:在本章节中代表关系型数据库,本章节以对接开源MySQL和Postgres数据库进行说明。
  • 在已有hive数据的集群上外置元数据库后,之前的元数据表不会自动同步。因此在安装hive之初就要确认好元数据是外置RDS还是内置到DBService,如果是外置到RDS,则需在安装hive时或者暂无hive数据时将元数据外置RDS,安装后不允许修改,否则将会造成原有元数据丢失。

Hive支持开源MySQL和Postgres元数据库。

  1. 安装开源MySQL或Postgres数据库。

    数据库安装节点需与集群处于同一网段,能互相访问。

  2. 上传驱动包。

    • Postgres:使用开源驱动包替换集群已有的驱动包。将postgres驱动包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实例节点“${BIGDATA_HOME}/third_lib/Hive”目录下。

  3. 在RDS中创建database,作为Hive元数据的指定库。

    在Postgres或MySQL中执行以下命令:

    create database databasename;

    其中databasename为数据库库名。

  4. 导入元数据建表sql。

    • Postgres的sql文件路径:${BIGDATA_HOME}/FusionInsight_HD_8.1.2.2/install/FusionInsight-Hive-3.1.0/hive-3.1.0/scripts/metastore/upgrade/postgres/hive-schema-3.1.0.postgres.sql

      Postgres导入sql文件的命令:

      ./bin/psql -U username -d databasename -f hive-schema-3.1.0.postgres.sql

      其中:

      ./bin/psql:在Postgres安装目录下。

      username:登录Postgres的用户名。

      databasename:数据库库名。

    • MySQL的sql文件路径:${BIGDATA_HOME}/FusionInsight_HD_8.1.2.2/install/FusionInsight-Hive-3.1.0/hive-3.1.0/scripts/metastore/upgrade/mysql/hive-schema-3.1.0.mysql.sql

      Mysql导入sql文件的命令:

      ./bin/mysql -u username -ppassword -Ddatabasename<hive-schema-3.1.0.mysql.sql

      其中:

      ./bin/mysql:在MySQL安装目录下

      username:登录MySQL的用户名。

      databasename:数据库库名。

  5. 登录FusionInsight Manager,具体请参见访问FusionInsight Manager,选择“集群 > 待操作集群名 > 服务 > Hive > 配置 > 全部配置 > Hive(服务) > MetaDB”,修改以下参数并保存,使Hive的配置对接到开源数据库。

    表1 参数说明

    参数名

    默认值

    描述

    javax.jdo.option.ConnectionDriverName

    org.postgresql.Driver

    Metastore上连接元数据的驱动类。

    • 外置Mysql,则值为:

      com.mysql.jdbc.Driver

    • 外置Postgres,则值为:

      org.postgresql.Driver

    javax.jdo.option.ConnectionURL

    jdbc:postgresql://%{DBSERVICE_FLOAT_IP}%{DBServer}:%{DBSERVICE_CPORT}/hivemeta?socketTimeout=60

    Metastore元数据JDBC链接的URL。

    • 外置Mysql,则值为:

      jdbc:mysql://Mysql的IP:Mysql的端口/test?useSSL=false

    • 外置Postgres,则值为:

      jdbc:postgresql://Postgres的IP:Postgres的端口号/test

    javax.jdo.option.ConnectionUserName

    hive${SERVICE_INDEX}${SERVICE_INDEX}

    Metastore上连接元数据数据库的用户名。

  6. 在MetaStore中修改Postgres数据库密码,选择“集群 > 待操作集群名 > 服务 > Hive > 配置 > 全部配置 > MetaStore(角色) > MetaDB”,修改以下参数并保存。

    表2 参数说明

    参数名

    默认值

    描述

    javax.jdo.option.extend.ConnectionPassword

    ******

    Metastore上连接外置元数据数据库的用户密码。密码后台会加密。

  7. 登录所有MetaStore服务的后台节点,检查本地目录“/opt/Bigdata/tmp”是否存在。

    • 存在,直接执行步骤8
    • 不存在,则先执行以下命令,创建目录。

      mkdir -p /opt/Bigdata/tmp

      chmod 755 /opt/Bigdata/tmp

  8. 保存配置,选择“概览 > 更多 > 重启服务”,输入密码开始重启Hive服务。