再出王牌:阿里云 Jindo DistCp 全面开放使用,成为阿里云数据迁移利器

简介: 此前 Jindo DistCp 仅限于E-MapReduce产品内部使用,此次全方位面向整个阿里云OSS/HDFS用户放开,并提供官方维护和支持技术,欢迎广大用户集成和使用。

作者:王涛,花名扬礼,阿里巴巴计算平台事业部 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

相关文章
|
SQL 关系型数据库 MySQL
Hive跨集群和版本迁移
Hive跨集群和版本迁移
|
Ubuntu 关系型数据库 MySQL
ubuntu 18.04安装hdp 3.1.0最新完整版(含安装包)
hdp平台提供centos、ubuntu等平台的安装与使用,本文以ubuntu 18.04操作系统为基础,介绍hdp3.1.0在该平台上的安装与配置,并提供安装包下载,手把手教您搭建属于您的大数据平台。
ubuntu 18.04安装hdp 3.1.0最新完整版(含安装包)
|
6月前
|
SQL 人工智能 自然语言处理
业务人员也能用的 AI 数据分析工具?Aloudata Agent “开箱即用”体验报告
不仅提升了个人工作效率,更推动了企业数据民主化进程,让数据真正成为驱动业务增长的核心引擎
|
存储 分布式计算 大数据
大数据之路:阿里巴巴大数据实践——大数据领域建模综述
数据建模解决数据冗余、资源浪费、一致性缺失及开发低效等核心问题,通过分层设计提升性能10~100倍,优化存储与计算成本,保障数据质量并提升开发效率。相比关系数据库,数据仓库采用维度建模与列式存储,支持高效分析。阿里巴巴采用Kimball模型与分层架构,实现OLAP场景下的高性能计算与实时离线一体化。
1105 0
|
SQL 存储 Java
Hudi on Flink 快速上手指南
本文由阿里巴巴的陈玉兆分享,主要介绍 Flink 集成 Hudi 的最新版本功能以及快速上手实践指南。
Hudi on Flink 快速上手指南
|
分布式计算 资源调度 Hadoop
Hadoop学习笔记(HDP)-Part.18 安装Flink
本文详细介绍了在HDP集群中通过Ambari部署Flink的全过程,涵盖环境配置、服务集成、参数调优及常见问题解决。重点包括Flink与YARN集成、Kerberos认证下任务提交,并以WordCount实例验证流处理功能,助力构建稳定高效的大数据实时计算平台。
1135 0
|
存储 分布式计算 并行计算
Spark GraphX 快速入门
Spark GraphX 快速入门
609 0
Spark GraphX 快速入门
|
网络协议 Linux 应用服务中间件
如何使用Iptables在Linux网关上转发端口
如何使用Iptables在Linux网关上转发端口
572 5
|
消息中间件 存储 Apache
Apache Paimon 表模式最佳实践
Apache Paimon 表模式最佳实践
4893 57
|
存储 关系型数据库 MySQL
DataX:导入4字节UTF8编码(生僻字)到Mysql数据库的utf8mb4数据表
MySql数据库的编码支持UFT8字符集。utf-8编码可能是2个字节、3个字节、4个字节的字符,MYSQL的utf-8编码,只支持3个字节的字符。汉字中很多生僻字都是4个字节的字符,日常生活中人的姓名就会有很多高位的生僻字。
7064 1