雲計算

再出王牌:阿里雲 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上的測試過程。

截屏2020-07-14 下午6.41.02.png
45.png

分析測試結果,可以看出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提供多種實用功能及其對應的參數選擇,下面介紹參數含義及其示例

截屏2020-07-14 下午6.53.08.png
截屏2020-07-14 下午6.53.32.png

截屏2020-07-14 下午6.53.50.png

更多詳細使用細節,請參考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釘釘群】進行交流和技術分享。
產品群.JPG

Leave a Reply

Your email address will not be published. Required fields are marked *