为了保证更稳定的大规模Hive元数据服务,您可以从原有的统一元数据库迁出到您自建的RDS实例。
使用限制
- 建议选择MySQL的5.7版本;系列选择高可用版。
- RDS MySQL实例须与E-MapReduce的实例处于同一个安全组,以便RDS与E-MapReduce可以通过内网地址互通。
操作步骤
- 在RDS中创建一个database,名称为hivemeta,同时创建一个用户,把hivemeta的读写权限赋给这个用户,详情请参见配置独立RDS。
- 导出统一元数据库的内容(只导出数据,不用导表结构)。
- 为保证数据的一致性, 在Hive服务页面停止Hive的MetaStore服务,保证导出期间不会有新的元数据变化,详情请参见停止Hive的MetaStore服务。
- 在Hive服务页面,单击配置页签。
- 在配置页面,查找javax.jdo.option.ConnectionUserName、javax.jdo.option.ConnectionPassword和javax.jdo.option.ConnectionURL的值。
说明
- 如果是老版本集群,请在$HIVE_CONF_DIR/hive-site.xml中查找。
- javax.jdo.option.ConnectionUserName表示对应数据库用户名;javax.jdo.option.ConnectionPassword表示对应数据库访问密码;javax.jdo.option.ConnectionURL对应数据库访问地址和库名。
- 进入集群Master节点,执行以下命令。
mysqldump -t DATABASENAME -h HOST -P PORT -u USERNAME -p PASSWORD > /tmp/metastore.sql
- 修改集群Master节点上的/usr/local/emr/emr-agent/run/meta_db_info.json,把里面的use_local_meta_db设置为false,meta数据库的链接地址、用户名和密码换成RDS的信息。
说明
- 对于无此文件的集群,直接忽略此步骤。
- 如果是HA集群,两个Master节点都需要进行操作。
- 在Hive配置页面,把元数据库的链接地址、用户名和密码换成新RDS的信息。
如果是老版本集群,修改$HIVE_CONF_DIR/hive-site.xml中对应的配置为需要连接的数据库。
- 在一台Master节点上,将hive-site.xml中的元数据库链接地址、用户名和密码换成RDS的信息,然后根据您集群的Hive版本初始化Schema。
- 如果Hive是2.3.x版本时,请执行以下命令进行初始化。
- 使用ssh方式登录集群Master节点,详情请参见登录集群。
- 执行以下命令,进入mysql目录。
cd /usr/lib/hive-current/scripts/metastore/upgrade/mysql/
- 执行以下命令,登录MySQL数据库。
mysql -h {RDS数据库内网或外网地址} -u{RDS用户名} -p{RDS密码}
- 执行以下命令,进行初始化。
use {RDS数据库名称};
source /usr/lib/hive-current/scripts/metastore/upgrade/mysql/hive-schema-2.3.0.mysql.sql;
说明 {RDS数据库名称}
为
步骤1中创建的数据库,例如hivemeta。
- 其它Hive版本时,执行以下命令进行初始化。
- 使用ssh方式登录集群Master节点,详情请参见登录集群。
- 执行以下命令,进入bin目录。
cd /usr/lib/hive-current/bin
- 执行以下命令,登录MySQL数据库。
./schematool -initSchema -dbType mysql
- 把之前导出来的Meta数据导入RDS,您可以通过以下命令行登录MySQL。
mysql -h {rds的url} -u {rds的用户名} -p
进入MySQL的命令行之后,执行命令source /tmp/metastore.sql
,正常情况下可以完全导入,不会报错。
- 重启Hive所有组件。
验证Hive功能是否正常,可以在Master节点上,执行hive cli
,确认数据是否和先前一样。
停止Hive的MetaStore服务
- 进入Hive服务页面。
- 登录阿里云E-MapReduce控制台。
- 在顶部菜单栏处,根据实际情况选择地域和资源组。
- 单击上方的集群管理页签。
- 在集群管理页面,单击相应集群所在行的详情。
- 在左侧导航栏,选择。
- 在Hive服务页面的组件列表区域,单击Hive MetaStore所在行的停止。
- 在执行集群操作对话框中,选择执行范围、是否滚动执行和失败处理策略,输入执行原因。
- 单击确定。
重启Hive所有组件
- 进入Hive服务页面。
- 登录阿里云E-MapReduce控制台。
- 在顶部菜单栏处,根据实际情况选择地域和资源组。
- 单击上方的集群管理页签。
- 在集群管理页面,单击相应集群所在行的详情。
- 在左侧导航栏,选择。
- 单击配置页签。
- 在右上角选择。
- 在执行集群操作对话框中,选择执行范围、是否滚动执行和失败处理策略,输入执行原因。
- 单击确定。