本期導讀 :【數據遷移】第一講
主題:高效遷移 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 工具種類
Jindo 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鏈接:
瀏覽器打開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)
直接觀看視頻回放,獲取實例講解~https://developer.aliyun.com/live/246728
不錯過每次直播信息、探討更多數據湖 JindoFS+OSS 相關技術問題,歡迎掃碼加入釘釘交流群!