hdp集群数据迁移

由于公司大数据平台建设升级调整,需要把开发集群(hdp 2.6)上的数据迁移到生产集群(hdp3.1),所以我们需要做历史数据迁移。准备工作就不说了,这里直接上迁移方案!

目前方案有两种,第一种是采用distcp命令,直接将开发集群上的hdfs中的数据迁移到生产集群上,第二种采用scp命令,将开发集群上的数据hdfs dfs -get到本地,然后把数据从开发本地scp到生产集群本地,再hdfs dfs -put 到生产集群上。由于目前存在一些原因,distcp命令暂无法生效,所以,我们先使用scp实现。
SCP
命令前置知识点

scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令,数据在不同节点间传输请先打通ssh免密登录,linux节点之间免密登录的操作请自行谷歌。
scp [可选参数] file_source file_target ①将开发集群hdfs上数据迁移到linux本地:

hadoop fs -get  hdfs://Cluster1dev/user/hive/warehouse/abc.db/*  /opt/dev_hdfs_tmp

②将数据从开发本地scp到生产本地:

scp -r /opt/hdfs_tmp userName@172.xxx.11.15:/opt/pro_hdfs_tmp

③把数据从生产本地迁移到生产hdfs:

hadoop fs -put /opt/pro_hdfs_tmp hdfs://Cluster2pro/user/hive/warehouse/abc.db

④由于只是把数据迁移到hdfs对应位置,某些分区表是需要修复分区的

msck repair table 表名
DISTCP
命令前置知识点

DistCp(Distributed Copy)是用于大规模集群内部或者集群之间的高性能拷贝工具,和在linux上执行cp,scp实现效果是一致的,不同的是,cp是将本机的文件和目录拷贝到本机的其它地方,scp则可以将A机器的文件或者目录拷贝到B机器,而Distcp则可以实现的是A(hdfs)集群的数据拷贝到B(hdfs)集群,而分布式使得数据拷贝时,可以实现A级群的DN节点同时向B集群的DN节点发送数据,突破了单机拷贝的网卡速率限制,拷贝效率更高。
同时Distcp它使用Map/Reduce任务实现文件分发,错误处理和恢复,以及报告生成。 它把文件和目录的列表作为map任务的输入,每个任务会完成源列表中部分文件的拷贝。(实际上Distcp只用到了map,没用用到reduce)。

hadoop distcp  -update -skipcrcheck webhdfs://hdfs2019:50070/hive/warehouse/aa.db webhdfs://hdfs2020:50070/hive/warehouse/aa.db