HDFS集群数据迁移方案-distcp

HDFS集群数据迁移方案-distcp

1. 原理

distcp原理是在Hadoop集群中使用MapReduce分布式拷贝数据。

2. 资源消耗

  • 源集群有只有数据读取和网络传输的消耗
  • 目的集群需要执行MapReduce任务,并且有数据写入的消耗(3副本需要有3倍的写入)

3. 兼容性

  • 同版本集群拷贝(或者协议兼容版本之间的拷贝)使用HDFS协议
hadoop distcp  hdfs://src-name-node:3333/user/src/dir hdfs://dst-name-node:4444/user/dst/dir
  • 不同版本集群拷贝(比如1.x到2.x)使用hftp协议或者webhdfs协议,都是使用hdfs的HTTP端口:
hadoop distcp  hftp://src-name-node:80/user/src/dir hftp://dst-name-node:80/user/dst/dir
hadoop distcp  webhdfs://src-name-node:80/user/src/dir webhdfs://dst-name-node:80/user/dst/dir

4. 迁移速度

  • distcp吞吐很大,理论上来说受限于网络带宽以及目标集群的写性能
  • distcp可以配置Mapper数量,以及限制Mapper的带宽(通过-bandwidth参数控制迁移速度)
  • 测试数据:6个小时完成120TB数据迁移

5. 数据一致性

  • 支持CRC校验,可以通过-skipcrccheck参数来跳过校验来性能
  • 可以通过-overwrite参数来覆盖已存在的文件,不设置该参数,默认跳过重复的文件
  • 设置-update,如果源和目标的大小,块大小或校验和不同,则覆盖
  • 支持大文件的断点续传,通过设置-append参数

6. 其他优化方式

  • 关闭目标集群占用io操作的服务,比如:balancer等
  • 写成功2副本即返回

6. reference

杭研这边的测试结果:
http://doc.hz.netease.com/pages/viewpage.action?pageId=179606369

官方文档:
https://s0hadoop0apache0org.icopy.site/docs/stable/hadoop-distcp/DistCp.html
https://hadoop.apache.org/docs/current/hadoop-distcp/DistCp.html

问题定位:
http://zhang-jc.github.io/2017/10/19/Hadoop-distcp-%E6%95%B0%E6%8D%AE%E5%90%8C%E6%AD%A5/    

distcp的速度:
https://developer.ibm.com/hadoop/2016/02/05/fast-can-data-transferred-hadoop-clusters-using-distcp/
https://blog.csdn.net/weichanhua/article/details/92746057

你可能感兴趣的:(大数据,系统运维)