天天看點

再出王牌:阿裡雲 Jindo DistCp 全面開放使用,成為阿裡雲資料遷移利器

作者:王濤,花名揚禮,阿裡巴巴計算平台事業部 EMR 開發工程師. 目前從事開源大資料存儲計算方面的開發和優化工作。

随着阿裡雲JindoFS SDK的全面放開使用,基于JindoFS SDK的阿裡雲資料遷移利器Jindo DistCp現在也全面面向使用者開放使用。Jindo DistCp是阿裡雲E-MapReduce團隊開發的大規模叢集内部和叢集之間分布式檔案拷貝的工具。其使用MapReduce實作檔案分發,錯誤處理和恢複,把檔案和目錄的清單作為map/reduce任務的輸入,每個任務會完成源清單中部分檔案的拷貝。目前全量支援hdfs->oss,hdfs->hdfs,oss->hdfs,oss->oss的資料拷貝場景,提供多種個性化拷貝參數和多種拷貝政策。重點優化hdfs到oss的資料拷貝,通過定制化CopyCommitter,實作No-Rename拷貝,并保證資料拷貝落地的一緻性。功能全量對齊S3 DistCp和HDFS DistCp,性能較HDFS DistCp有較大提升,目标提供高效、穩定、安全的資料拷貝工具。本文主要介紹如何使用Jindo DistCp來進行基本檔案拷貝,以及如何在不同場景下提高資料拷貝性能。值得一提的是,此前 Jindo DistCp 僅限于E-MapReduce産品内部使用,此次全方位面向整個阿裡雲OSS/HDFS使用者放開,并提供官方維護和支援技術,歡迎廣大使用者內建和使用。

大資料和資料遷移工具

在傳統大資料領域,我們經常使用HDFS作為底層存儲,并且在HDFS存儲大規模的資料。在進行資料遷移、資料拷貝的場景中,大家選擇最常用的是Hadoop自帶的DistCp工具,但是其不能很好利用對象存儲系統如OSS的特性,導緻效率低下并且不能最終保證一緻性,提供的功能選項也比較簡單,不能很好的滿足使用者的需求。此時一個高效、功能豐富的資料遷移工具成為影響軟體搬棧、業務上雲的重要影響因素。

Hadoop DistCp

Hadoop DistCp是Hadoop內建的分布式資料遷移工具,提供了基本檔案拷貝、覆寫拷貝、指定map并行度、log輸出路徑等功能。在Hadoop2x上對DistCp進行了部分優化例如拷貝政策的選擇,預設使用 uniformsize(每個 map 會平衡檔案大小)如果指定 dynamic,則會使用 DynamicInputFormat。這些功能優化了普通hdfs間資料拷貝,但是對于對象存儲系統如OSS缺少資料寫入方面的優化。

S3 DistCp

S3 DistCp是AWS為S3提供的distcp工具, S3DistCp是Hadoop DistCp 的擴充,它進行了優化使得其可以和S3結合使用,并新增了一些實用功能。新增功能如增量複制檔案、複制檔案時指定壓縮方式、根據模式進行資料聚合、按照檔案清單進行拷貝等。S3 DistCp依靠S3對象存儲系統,目前隻能在AWS EMR内部使用,并不開放給普通使用者。

Jindo DistCp

Jindo DistCp是一個簡單易用的分布式檔案拷貝工具,目前主要用在E-Mapreduce叢集内,主要提供hdfs到OSS的資料遷移服務,相比于Hadoop DistCp和S3 DistCp,Jindo DistCp做了很多優化以及新增了許多個性化功能,并且深度結合OSS對象存儲的特性,定制化CopyCommitter,實作No-Rename拷貝,大大縮短上雲資料遷移時間消耗。現在Jindo DistCp對外開放使用,我們可以使用該功能來進行上雲資料遷移,獲得OSS資料遷移利器。

為什麼使用 Jindo DistCp?

1、效率高,在測試場景中最高可到1.59倍的加速。

2、基本功能豐富,提供多種拷貝方式和場景優化政策。

3、深度結合OSS,對檔案提供直接歸檔和低頻、壓縮等操作。

4、實作No-Rename拷貝,保證資料一緻性。

5、場景全面,可完全替代Hadoop DistCp,支援多Hadoop版本(如有問題可提issue)

Jindo DistCp 相容性如何?

Jindo DistCp目前支援Hadoop2.7+和最新的Hadoop3.x,以兩個不同的jar形式提供服務,依賴Hadoop環境并且不會和Hadoop DistCp産生沖突。在阿裡雲EMR内部可直接提供Jindo DistCp的服務,使用者無需進行jar包下載下傳。使用者下載下傳jar包後,再通過參數或者Hadoop配置檔案配上oss的AK即可使用。

使用 Jindo DistCp 性能提升多少?

我們做了一個Jindo DistCp和Hadoop DistCp的性能對比,在這個測試中我們以hdfs到oss為主要場景,利用Hadoop自帶的測試資料集TestDFSIO分别生成1000個10M、1000個500M、1000個1G大小的檔案進行從hdfs拷貝資料到oss上的測試過程。

再出王牌:阿裡雲 Jindo DistCp 全面開放使用,成為阿裡雲資料遷移利器
再出王牌:阿裡雲 Jindo DistCp 全面開放使用,成為阿裡雲資料遷移利器

分析測試結果,可以看出Jindo DistCp相比Hadoop DistCp具有較大的性能提升,在測試場景中最高可達到1.59倍加速效果。

使用工具包

1. 下載下傳jar包

我們去

github repo

下載下傳最新的jar包 jindo-distcp-x.x.x.jar

注意:目前Jar包隻支援Linux、MacOS作業系統,因為SDK底層采用了native代碼。

2. 配置OSS通路AK

您可以在指令中使用程式執行時指定--key、--secret、--endPoint參數選項來指定AK。

示例指令如下:

hadoop jar jindo-distcp-2.7.3.jar --src /data/incoming/hourly_table --dest oss://yang-hhht/hourly_table --key yourkey --secret yoursecret --endPoint oss-cn-hangzhou.aliyuncs.com           

您也可以将oss的ak、secret、endpoint預先配置在 hadoop的 core-site.xml 檔案裡 ,避免每次使用時臨時填寫ak。

<configuration>
    <property>
        <name>fs.jfs.cache.oss-accessKeyId</name>
        <value>xxx</value>
    </property>
    <property>
        <name>fs.jfs.cache.oss-accessKeySecret</name>
        <value>xxx</value>
    </property>
    <property>
        <name>fs.jfs.cache.oss-endpoint</name>
        <value>oss-cn-xxx.aliyuncs.com</value>
    </property>
</configuration>           

另外,我們推薦配置

免密功能

,避免明文儲存accessKey,提高安全性。

使用手冊

Jindo DistCp提供多種實用功能及其對應的參數選擇,下面介紹參數含義及其示例

再出王牌:阿裡雲 Jindo DistCp 全面開放使用,成為阿裡雲資料遷移利器
再出王牌:阿裡雲 Jindo DistCp 全面開放使用,成為阿裡雲資料遷移利器
再出王牌:阿裡雲 Jindo DistCp 全面開放使用,成為阿裡雲資料遷移利器

更多詳細使用細節,請參考

Jindo DistCp使用指南

聯系我們

Jindo DistCp還在日益完善,後續會不斷根據使用者需求進行優化。歡迎大家下載下傳使用Jindo DistCp,如果遇到任何問題,請随時聯系阿裡雲E-Mapreduce團隊,或者在github上送出issue,我們将盡快為您解答。

相關閱讀

重磅:阿裡雲 JindoFS SDK 全面開放使用,OSS 檔案各項操作性能得到大幅提升 JindoFS - 分層存儲 EMR Spark-SQL性能極緻優化揭秘 Native Codegen Framework Jindo SQL 性能優化之 RuntimeFilter Plus JindoFS: 雲上大資料的高性能資料湖存儲方案 JindoFS概述:雲原生的大資料計算存儲分離方案 JindoFS解析 - 雲上大資料高性能資料湖存儲方案

後續我們也會在雲栖社群和釘釘群分享更多的 Jindo 技術幹貨,歡迎有興趣的同學加入 【阿裡雲EMR釘釘群】進行交流和技術分享。

再出王牌:阿裡雲 Jindo DistCp 全面開放使用,成為阿裡雲資料遷移利器