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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章