数据迁移场景:
冷热集群数据分类存储;集群数据整体迁移;数据的准实时同步,目的在于数据的双备份可用。
数据迁移需要考虑的因素:
带宽、性能、增量同步(原始数据文件进行了追加写、被删除或重命名)、数据迁移的同步性。
1 scp实现两个远程主机间的文件复制
语法:scp -r 源数据 目标地址
scp -r hello.txt root@hadoop104:/user/liaoyanxia/hello.txt //推
scp -r root@hadoop103/user/liaoyanxia/hello.txt hello.txt //拉
scp- r root@hadoop103/user/liaoyanxia/hello.txt root@hadoop104/user/liaoyanxia/hello.txt //是通过本地主机中转实现两个远程主机的文件复制;如果在两个远程主机之间ssh没有配置的情况下可以使用该方式。
2 distcp实现两个Hadoop集群间的数据复制
bin/hadoop distcp hdfs://hadoop102:8020/user/liaoyanxia/hello.txt hdfs://hadoop105/user/liaoyanxia/hello.txt
DistCP的本质是一个 MapReduce 任务,只有 Map 阶段,没有 Reduce 阶段,具备分布式执行的特性,在 Map 任务中从老集群读取数据,然后写入新集群。
DistCP 支持带宽限流,可以通过参数 bandwidth 来控制。
增量同步数据,通过 update、append、diff 这 3 个参数来控制:
Update:更新目标路径,只拷贝相对于源端,目标端不存在的文件或目录。
Append:追加写目标路径下已经存在的文件,如果这个文件在源端已经发生了追加写操作。
Diff:通过快照的diff对比信息来同步源路径与目标路径。
高效的性能:执行的分布式特性(纯 map 任务构成的 job)、高效的 MR 组件。