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

前提条件

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

使用限制

EMR上创建的集群类型与MySQL关系如下:
  • 如果创建的是Hadoop集群,则数据库类型选择MySQL,版本选择5.7;系列选择高可用版
  • 如果创建的是EMR Studio集群,则数据库类型选择MySQL,版本选择8.0。

操作流程

  1. 步骤一:元数据库准备
    准备元数据库信息。
  2. 步骤二:创建集群
    在EMR控制台上创建集群,关联元数据库信息。
  3. 可选:步骤三:Metastore初始化
    根据Hive版本初始化Metastore。
    重要 如果您创建的是Hadoop集群,则需要执行该步骤。

步骤一:元数据库准备

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

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

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

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

步骤二:创建集群

在创建集群的基础配置页面,配置以下参数,其他参数的配置请参见创建集群
参数 描述
集群名称 集群的名字,长度限制为1~64个字符,仅可使用中文、字母、数字、中划线(-)和下划线(_)。
元数据选择 选择使用自建RDS
数据库链接 填写格式为jdbc:mysql://rm-xxxxxx.mysql.rds.aliyuncs.com/<数据库名称>?createDatabaseIfNotExist=true&characterEncoding=UTF-8
说明
数据库用户名 填写步骤一:元数据库准备中账号的用户名。
数据库密码 填写步骤一:元数据库准备中账号的密码。
数据开发存储 设置Airflow的logs、dags以及Zeppelin的notebook在OSS上的存储位置。
说明 该参数仅在创建EMR Studio集群时可见。

步骤三:Metastore初始化

重要 如果您创建的是Hadoop集群,则需要按照以下步骤根据Hive版本初始化Metastore。
  1. 进入集群详情页面。
    1. 登录阿里云E-MapReduce控制台
    2. 在顶部菜单栏处,根据实际情况选择地域和资源组
    3. 单击上方的集群管理页签。
    4. 集群管理页面,单击相应集群所在行的详情
  2. 集群基础信息页面的软件信息区域,检查Hive的版本,并进行初始化。
    • 如果Hive是2.3.x版本,请按照以下步骤进行初始化。
      1. 使用ssh方式登录集群Master节点,详情请参见登录集群
      2. 执行以下命令,进入mysql目录。
        cd /usr/lib/hive-current/scripts/metastore/upgrade/mysql/
      3. 执行以下命令,登录MySQL数据库。
        mysql -h {RDS数据库内网或外网地址} -u{RDS用户名} -p{RDS密码}
      4. 执行以下命令,进行初始化。
        use {RDS数据库名称};
        source /usr/lib/hive-current/scripts/metastore/upgrade/mysql/hive-schema-2.3.0.mysql.sql;
      上述命令中参数描述如下:
    • 如果Hive是其他版本时,执行以下命令进行初始化。
      1. 使用ssh方式登录集群Master节点,详情请参见登录集群
      2. 执行以下命令,切换为hadoop用户。
        su hadoop
      3. 执行以下命令,进行初始化。
        schematool -initSchema -dbType mysql
    待初始化成功后,则可以使用自建的RDS作为Hive的元数据库。
    说明 在初始化之前,Hive的Hive MetaStore、HiveServer2和Spark的ThriftServer可能会出现异常,待初始化之后会恢复正常。

常见问题