本期导读 :【数据迁移】第一讲
主题:高效迁移 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 相关技术问题,欢迎扫码加入钉钉交流群!