喜欢的同学记得点赞关注呀~~
准备工作
在进行集群数据迁移之前,首先梳理出需要迁移的hdfs路径,文件数及文件大小。确保目标集群存储空间及文件数不超限额。
可参考以下信息:
源集群 namenode1:50070
hiveserver1
源集群路径 /data/warehouse/buiness.db
目的集群 namenode2
hiveserver2
目的集群 /data/warehouse/input/
1.全量数据拷贝
通过distcp指令,对跨集群文件传输。
注意,红色字体需要结合自身总带宽修改。
nohup hadoop distcp -Dmapreduce.job.queuename=root.default -Dipc.client.fallback-to-simple-auth-allowed=true -m 30 -bandwidth 25 -p webhdfs://namenode1:50070/data/warehouse/buiness.db hdfs://namenode2:8020/data/warehouse/input>/tmp/distcp_CSDETL_BAK.log 2>&1 &
2.验证文件一致性
通过count文件数量验证迁移数据是否正确,确保迁移过程无数据丢失情况。
源集群:
hdfs hdfs dfs -count /data/warehouse/business.db/
目的集群:
hdfs hdfs dfs -count /data/warehouse/
3.建表
通过连接源集群beeline方式连接到hive;
beeline
!connect jdbc:hive2://hiveserver:10000
查询建表语句
show create table 'table_name';
通过建表语句,查看是否是分区表
![d5b0a06f2b617cb039fe70a258a31511.png](https://i-blog.csdnimg.cn/blog_migrate/34e5c4229c7765b91bf41c9f2fad8a1d.jpeg)
登录目标集群beeline连接到hive,使用源表语句建表。(因集群、目录等可能发生改变,需要修改location等信息)
4.创建分区表
以上步骤以及完成了数据拷贝以及新集群中表的创建工作,但是分区表还需要单独创建分区,并指定location
alter table table_name add if not exists partition (`record_date`='20200820') location '/data/warehouse/bussiness.db/table_name/record_date=20200820/';
5.再次进行增量拷贝
6.最后再进行一次数据对比即可