本期導讀 :【資料遷移】第一講
主題:高效遷移 HDFS 海量檔案到 OSS
講師:揚禮,阿裡巴巴計算平台事業部 EMR 開發工程師
主要内容:
- DistCp 介紹
- Jindo DistCp 介紹
- 性能優化
- 功能示範
直播回放連結:
https://developer.aliyun.com/live/246728背景介紹
為了讓更多開發者了解并使用 JindoFS+OSS,由阿裡雲JindoFS+OSS 團隊打造的專業公開課【資料湖JindoFS+OSS 實操幹貨36講】在每周二16:00 準時直播開講!掃描文章底部二維碼,進釘釘群不錯過每次直播資訊!
内容概述
什麼是 DistCp?
DistCp(分布式拷貝)是用于大規模叢集内部和叢集之間拷貝的工具。它使用 Map/Reduce 實作檔案分發,錯誤處理和恢複,以及報告生成。它把檔案和目錄的清單作為 map 任務的輸入,每個任務會完成源清單中部分檔案的拷貝。
DistCp 工具種類

- 分布式檔案拷貝工具,基于 MapReduce
- 支援多種資料源(HDFS / OSS / S3 / COS 等)
- 多種拷貝政策,功能對齊開源 Hadoop DistCp 及 S3 DistCp 等
- 深度結合 OSS,基于 native 實作的 JindoFS SDK
- 優化 JobCommitter,性能領先開源工具
現有 HDFS海量檔案同步到 OSS 存在的問題
- 檔案數量規模大,百/千萬級,開源 DistCp 逾時/OOM 等
- HDFS 拷貝到 OSS ,效率較慢,Rename 耗時
- 現有開源工具無法保證資料拷貝一緻性
- 不支援傳輸時進行歸檔/冷存儲等 OSS 特性
Jindo DistCp 基于 HDFS 海量檔案同步到 OSS 場景優化
- 分批 Batch,避免檔案數過多/檔案size過大,造成逾時/OOM
- 定制化 CopyCommitter,實作 No-Rename 拷貝,并保證資料拷貝落地的一緻性
- 大/小檔案傳輸政策優化
- 基于 native 實作的 JindoFS SDK,優化讀寫 OSS 性能
性能優化:CopyCommitter – NoRename 拷貝
1、MapReduce JobCommitter
2、Jindo CopyCommitter
基于對象存儲系統的 Multipart Upload,結合 OSS 檔案系統層面的定制支援,可以實作在保證資料一緻性前提下無需 Rename 操作的 Job Committer 實作。
性能測試
我們做了一個 Jindo DistCp 和 Hadoop DistCp的性能對比,在這個測試中我們以 HDFS 到 OSS 離線資料遷移為主要場景,利用Hadoop 自帶的測試資料集 TestDFSIO 分别生成1000個10M、1000個500M、1000個1G 大小的檔案進行從 HDFS 拷貝資料到 OSS 上的測試過程。
Github連結:
https://github.com/aliyun/alibabacloud-jindofs/blob/master/docs/jindo_distcp/jindo_distcp_overview.md浏覽器打開Github連結,點選對應使用場景,進行具體實踐。
執行個體示範
- 在Github中下載下傳 jindo-distcp-3.5.0.jar
- 将 jar 包拷貝到可送出 YARN 作業的節點上
- 選擇 src 和 dest 路徑及合适的參數
- hadoop jar jindo-distcp-3.5.0.jar --src /data --dest oss://yang-ha/data --parallelism 10
- 執行指令
- 檢視進度(指令行/WebUI)
直接觀看視訊回放,擷取執行個體講解~
不錯過每次直播資訊、探讨更多資料湖 JindoFS+OSS 相關技術問題,歡迎掃碼加入釘釘交流群!