再出王牌:阿里云 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相比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,如果遇到任何问题,请随时联系阿里云E-Mapreduce团队,或者在github上提交issue,我们将尽快为您解答。
相关阅读
重磅:阿里云 JindoFS SDK 全面开放使用,OSS 文件各项操作性能得到大幅提升
EMR Spark-SQL性能极致优化揭秘 Native Codegen Framework
Jindo SQL 性能优化之 RuntimeFilter Plus
后续我们也会在云栖社区和钉钉群分享更多的 Jindo 技术干货,欢迎有兴趣的同学加入 【阿里云EMR钉钉群】进行交流和技术分享。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
大神带练, 0基础Spark训练营限时免费抢报!
Apache Spark 社区作为全球最大的开源社区,也是Apache基金会旗下最流行的开源分布式内存式大数据处理引擎。他快速、易于使用的框架,允许你解决各种复杂的数据问题,无论是半结构化、结构化、流式,或机器学习、数据科学。即使拥有来自250多个组织的超过1000个贡献者,以及遍布全球570多个地方的超过30万个Spark Meetup社区成员,作为一名国内的Spark小白,我相信大家都有一个共同的痛点,就是国内Spark相关资料过少。为此我们筹办了一系列针对国内Spark开发者的活动,指路回顾 | SPARK + AI SUMMIT 2020 中文精华版线上峰会圆满结束(附PPT下载) 作为普惠Spark中华小当家系列活动的第二站,我们隆重推出第一期Spark学习训练营。由Spark 中文社区联合阿里云开发者社区为联合打造,持续定期更新。第一期训练营邀请到了全 Apache Spark Committer 阵容,经过半个月对课程的精心打磨今天正式上线!限时免费抢报,速速来看→ 训练营时间:2020年7月20日-25日开营名额:500人,报满即止报名截止时间:2020年7月19日18...
- 下一篇
剖析 Elasticsearch 源码,解读 ES 在 index、create 时的原理
作者介绍 魏彬,普翔科技 CTO,开源软件爱好者,中国第一位 Elastic 认证工程师,《Elastic日报》和 《ElasticTalk》社区项目发起人,被 elastic 中国公司授予 2019 年度合作伙伴架构师特别贡献奖。对 Elasticsearch、Kibana、Beats、Logstash、Grafana 等开源软件有丰富的实践经验,为零售、金融、保险、证券、科技等众多行业的客户提供过咨询和培训服务,帮助客户在实际业务中找准开源软件的定位,实现从 0 到 1 的落地、从 1 到 N 的拓展,产生实际的业务价值。 社区里面有人问了如下一个问题: 执行 bulk 索引文档的时候,用 index 或者 create 类型并且自定义 doc id 的情况下,是否会像 update 一样每次都要去 get 一遍原始文档? 比如下面的这条命令:POST _bulk { "index" : { "_index" : "test", "_type" : "type1", "_id" : "1" } } { "field1" : "value1" } { "create" : { "_i...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS关闭SELinux安全模块
- Linux系统CentOS6、CentOS7手动修改IP地址
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7设置SWAP分区,小内存服务器的救世主