hive 跨集群迁移

hive跨集群迁移数据工作中相对比较常见的事情, 其中涉及到数据迁移, metastore迁移, hive版本升级等.

1. 迁移hdfs数据至新集群

hadoop distcp -skipcrccheck -update hdfs://xxx.xxx.xxx.xxx:8020/
user/risk hdfs://xxx.xxx.xxx.xxx:8020/user/risk

-skipcrccheck 因本次迁移涉及低版本迁移高版本, 如果hadoop版本则不需要
-update 增量更新, 通过名称和大小比较,源与目标不同则更新

2. 源集群metastore数据备份(mysql导出)

mysqldump  -u root -p’密码’  --skip-lock-tables -h xxx.xxx.xxx.xxx hive 
> xxx.sql

3. 目标集群导入metastore数据备份(mysql导入)

mysql -u root -proot --default-character-set=utf8 risk 
< risk.sql

4. 升级hive内容库(如果hive版本升级, 同版本不需要)

mysql -uroot -proot risk -hxxx.xxx.xxx.xxx < mysqlupgrade-0.13.0-to-0.14.0.mysql.sql
mysql -uroot -proot risk -hxxx.xxx.xxx.xxx < mysqlupgrade-0.14.0-to-1.1.0.mysql.sql

版本要依据版本序列升序升级,不可跨越版本

5. 修改 metastore 内容库的集群信息

update dbs  set DB_LOCATION_URI = replace(DB_LOCATION_URI,'hdfs://源1','hdfs://目标') ;
update sds set LOCATION = replace(LOCATION ,'hdfs://ns2','hdfs://adhoc') ;

6. 拷贝hive安装包, 拷贝core-site.xml 与 hdfs-site.xml至 conf中, 后续则正常启动即可.

你可能感兴趣的:(hadoop)