操作步骤
购买RDS实例,保证RDS可以和集群的master节点网络是通的;最好是跟E-MapReduce的ECS在同一个安全组,这样可以直接使用RDS的内网地址。
在RDS中创建一个database,名称为hivemeta,同时创建一个用户,把hivemeta的读写权限赋给这个用户。
导出统一元数据库的内容(只导出数据,不用导表结构)。
i. 为保证数据的一致性, 在Hive服务页面停止Hive的metastore服务,保证导出期间不会有新的元数据变化。
ii. 在Hive服务页面,单击配置页签。
iii. 在配置页面,查找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对应数据库访问地址和库名。 iv. 进入集群master节点,执行以下命令。 mysqldump -t DATABASENAME -h HOST -P PORT -u USERNAME -pPASSWORD > /tmp/metastore.sql 说明 密码为上一步骤在配置页面获取的密码。
修改集群Master节点(如果是HA集群两个master都需要)上的/usr/local/emr/emr-agent/run/meta_db_info.json,把里面的use_local_meta_db设置为false,meta数据库的链接地址、用户名和密码换成RDS的信息。 说明 对于无此文件的集群,直接忽略此步骤。
在Hive配置页面,把元数据库的链接地址、用户名和密码换成新RDS的信息。 如果是老版本集群,修改$HIVE_CONF_DIR/hive-site.xml中对应的配置为需要连接的数据库。
在一台Master节点上,把hive-site.xml里面的元数据库链接地址、用户名和密码换成RDS的信息,然后执行init schema。
cd /usr/lib/hive-current/bin ./schematool -initSchema -dbType mysql
把之前导出来的meta数据导入RDS。命令行登录MySQL。 mysql -h {rds的url} -u {rds的用户名} -p 进入MySQL的命令行之后,执行source /tmp/metastore.sql正常情况可以完全导入,不会报错。
重启Hive所有组件。 验证Hive功能是否正常,可以在Master节点上,执行hive cli,确认数据是否和先前一样。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。