工作上有一个需求,要把整个hive 迁移到另一套环境上做一个测试。源环境的hdfs 没有做ha ,目标环境的hdfs 做了ha,完成工作后,整理过程为以下步骤:
1、把hive 的文件从hdfs 取出到本地,并打包,方便传输
hive 内表文件
hadoop fs -copyToLocal /user/hive/warehouse /root/warehouse
hive 外表文件
hadoop fs -copyToLocal /user/hdfs/hiveexternal /root/hiveexternal
2、把hive在mysql 中的元数据库导出,并打包,方便传输
/usr/local/mysql/bin/mysqldump -uroot -p --databases hive >/root/hive.sql
3、把hive 的数据文件导入到新集群的hdfs 中
hive 内表文件
hadoop fs -copyFromLocal warehouse hdfs://hadoop01/user/hive
hive 外表文件
hadoop fs -copyFromLocal hiveexternal hdfs://nameservice1/user/hdfs
4、将hive 的mysql 元数据导入到新集群的mysql的hive 库中
命令:略
5:修改mysql 中hive 数据库的hdfs指向,如果hdfs 的路径不一致的话:
update DBS set DB_LOCATION_URI = replace(DB_LOCATION_URI,‘hdfs://源1’,‘hdfs://目标’) ;
update SDS set LOCATION = replace(LOCATION ,‘hdfs://ns2’,‘hdfs://adhoc’) ;
例如:
update hive.SDS set LOCATION = replace(LOCATION ,‘devmaster:8020’,‘nameservice1’) ;
6、验证
欢迎一起交流