hive数据迁移 从apache2.x迁移到cdh hive 1.x

迁移背景:

1、hive有30多个库,最大的库有100多张表,这中情况下必须采用 脚本式 迁移

2、2个hive版本不一致,元数据mysql表结构不一致,不能采用mysql数据库覆盖方式

3、hive数据仓库只迁移一部分,另外一部分后续迁移,不能采用mysql数据库覆盖方式

4.  2个集群暂时未开启权限认证

迁移流程:

1.apache集群导出元数据

#导出hive数据库test,脚本的grep -V为了去除导出脚本的警告语句

#/bin/bash
database=test
datalocalpath=/home/dip/test
for tab in `hive -e "use $database;show tables" |grep -v WARN`
do
hive -e  "show create table $database.$tab" |grep -V WARN > $datalocalpath/$tab.sql
done

2.cdh集群导入元数据

 注意,如果2个集群数据仓库存储目录不一致,需要修改导出的sql脚本 主要修改以下位置

LOCATION
'hdfs://nameservice/user/hive/warehouse/test.db/word'

新集群先建立数据库test
create database test;

test库导入数据

#/bin/bash   
datalocalpath=/home/dip/test
for  tab in `ls $datalocalpath`
do
hive -f $datalocalpath/$tab
done

3.hdfs数据迁移(cdh的namenode端口8020)

hadoop distcp -update /hive/warehouse/test.db hdfs://198.2.120.31:8020/user/hive/warehouse/test.db/

4.修复表分区

for tab in `hive -e "use test;show tables" |grep -v WARN` ;do MSCK REPAIR TABLE test.$tab ;done

#这里的数据库只有一级分区,如果有多层分区参考

set hive.msck.path.validation=ignore;

MSCK REPAIR TABLE table_name;

 

posted @ 2019-07-24 10:50  bioamin  阅读(560)  评论(0编辑  收藏  举报