本文介绍如何配置独立的阿里云RDS,作为E-MapReduce(简称EMR)上Hadoop或Data Development集群的元数据。

前提条件

已购买RDS,详情请参见 创建RDS MySQL实例
说明 本文以MySQL 5.7版本为例介绍。

使用限制

  • 如果创建的是Hadoop集群,建议类型选择MySQL的5.7;系列选择高可用版
  • 如果创建的是Data Development集群,类型需要选择MySQL的8.0。

元数据库准备

  1. 创建hivemeta的数据库。
    详情请参见 创建数据库和账号中的创建数据库。 create_database
  2. 创建用户并授权读写权限。
    注意
    create_user

    请记录创建账号的用户名和密码,创建集群会用到。

  3. 获取数据库内网地址。
    1. 设置白名单,详情请参见设置IP白名单
    2. 在实例详细页面,单击左侧导航栏中的数据库连接
    3. 数据库连接页面,单击内网地址进行复制。
      net_inter

      请记录内网地址,创建集群时会用到。

创建集群

  • Hadoop集群create_hadoop
  • Data Development集群create_ddc
在创建集群的 基础配置页面,配置以下参数,其他参数的配置请参见 创建集群
参数 描述
集群名称 集群的名字,长度限制为1~64个字符,仅可使用中文、字母、数字、中划线(-)和下划线(_)。
元数据选择 选择独立RDS MySQL
数据库链接 数据库连接填写格式为jdbc:mysql://rm-xxxxxx.mysql.rds.aliyuncs.com/<数据库名称>?createDatabaseIfNotExist=true&characterEncoding=UTF-8
数据库用户名 填写元数据库准备中账号的用户名。
数据库密码 填写元数据库准备中账号的密码。

Metastore初始化

如果您创建的是Hadoop集群,需要按照以下步骤根据Hive版本初始化Metastore。

  1. 登录阿里云E-MapReduce控制台
  2. 在顶部菜单栏处,根据实际情况选择地域和资源组
  3. 单击上方的集群管理页签。
  4. 集群管理页面,单击相应集群所在行的详情
  5. 集群基础信息页面的软件信息区域,检查Hive的版本,并进行初始化。
    • 如果Hive是2.3.x版本,请执行以下命令进行初始化。
      使用SSH方式登录集群的Master节点,执行以下命令。
      1. 进入如下目录。
        cd /usr/lib/hive-current/scripts/metastore/upgrade/mysql/
      2. 登录MySQL数据库。
        mysql -h {RDS数据库内网或外网地址} -u{RDS用户名} -p{RDS密码}
      3. 在MySQL命令行中执行以下命令。
        use {RDS数据库名称};
        source /usr/lib/hive-current/scripts/metastore/upgrade/mysql/hive-schema-2.3.0.mysql.sql;
      上述命令中参数描述如下:
    • 如果Hive是其他版本时,推荐执行以下命令进行初始化。
      使用SSH方式登录集群的Master节点,执行以下命令。
      su hadoop
      schematool -initSchema -dbType mysql
    待初始化成功后,就可以使用自建的RDS作为Hive的元数据库。
    说明 在初始化之前,Hive的Hive MetaStore、HiveServer2和Spark的ThriftServer可能会出现异常,待初始化之后会恢复正常。
    如果初始化时提示异常信息,请检查RDS MySQL安全组配置,确认RDS对EMR集群开通安全组白名单。 initialize_fail
    如果Hive元数据信息中包含中文信息,例如列注释和分区名等,可以在对应RDS数据库中逐条依次执行如下命令修改相应字段为UTF-8格式。
    1. 执行以下命令,修改COMMENT列的数据类型。
      alter table COLUMNS_V2 modify column COMMENT varchar(256) character set utf8;
    2. 执行以下命令,修改表TABLE_PARAMS中PARAM_VALUE列的数据类型。
      alter table TABLE_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
    3. 执行以下命令,修改表PARTITION_PARAMS中PARAM_VALUE列的数据类型。
      alter table PARTITION_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;
    4. 执行以下命令,修改PKEY_COMMENT列的数据类型。
      alter table PARTITION_KEYS modify column PKEY_COMMENT varchar(4000) character set utf8;
    5. 执行以下命令,修改表INDEX_PARAMS中PARAM_VALUE列的数据类型。
      alter table INDEX_PARAMS modify column PARAM_VALUE varchar(4000) character set utf8;