- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 视频嵌入链接 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
Hadoop Job Committer演化与发展
2020年3月5日JindoFS系列直播【Hadoop Job committer 的演化和发展】
讲师:
李呈祥,花名司麟 ,阿里云智能EMR团队高级技术专家,Apache Hive Committer, Apache Flink Committer,目前主要专注于EMR产品中开源计算引擎的优化工作
直播简介:
Job Committer是Mapreduce/Spark等分布式计算框架的重要组成部分,为分布式任务的写入提供一致性的保证,本次分享主要介绍Job Committer的演进历史,以及社区和EMR在S3/OSS等云存储上的最新进展。
阿里巴巴开源大数据EMR技术团队成立Apache Spark中国技术社区,定期打造国内Spark线上线下交流活动。请持续关注。
钉钉群号:21784001
团队群号:HPRX8117
微信公众号:Apache Spark技术交流社区
展开查看详情
1 .Hadoop Job Committer演化与发 展 计算平台事业部-EMR 司麟 2020-03-05
2 .目录 1 Job Committer介绍 2 FileOutputCommitter V1/V2 3 JindoOssCommitter
3 .Job Committer介绍 Part I
4 .为什么需要Job Committer? 在各种异常情况下保证任务最终输出数据的一 致性: 1. 任务失败 2. 作业重试 3. Speculative task
5 .Job Committer如何解决数据一致性问题 • commitTask(): commit task输出数据,保证task级 别数据一致性。 • commitJob(): commit job输出数据,保证job级别 数据一致性。 • abortTask(): abort task输出数据。 • abortJob(): abort 整个job输出数据。 • cleanUpJob(): 作业完成后,清理临时数据。
6 .FileOutputCommiter V1 Rename 2次 Task输出 是 一致性 Job输出 是* 一致性 Job失败 是* 时一致性
7 .FileOutputCommiter V2 Rename 1次 Task输出 是* 一致性 Job输出 否* 一致性 Job失败 否* 时一致性
8 .FileOutputCommitter在OSS上的问题 • OssFileSystem Rename = Copy + Delete • 大量的文件拷贝可能会占据作业大部分的执行时间,尤其是写分区表等这种产生大量文件的任务。 • Rename阶段时间过长,影响Committer的数据一致性,且容易中途失败,影响最终一致性。
9 .JindoOssCommitter的实现 Part I
10 .Oss Multipart Upload Multipart Upload是OSS为了大文件上传引入的一个高效上传机制,相关的接口包括: 1. initMultipartUpload: 开启针对一个文件的multipart上传,获取到uploadId。 2. multipartUpload:指定path,uploadId,partNumber,上传数据块到OSS。在此过程中文件对外不可见。 3. completeMultipartUpload:完成MultipartUpload,此时文件对外可见。 4. abortMultipartUpload:取消未完成的MultipartUpload。 利用MultipartUpload未完成时,文件对外不可见的特性,JindoOssCommitter实现了完全没有rename操作的数 据一致性保证。
11 .JindoOssCommitter实现 Rename 0次 Task输出 是 一致性 Job输出 是* 一致性 1. Task Write Data:通过MultipartUpload直接写入最终目录, Job失败 是* 在OSS上记录part信息。 一致性 2. Commit Task:合并Task所有part信息记录在OSS文件中。 3. Commit Job:取出所有part信息,Complete MultipartUpload。
12 .S3a Committer • Since Hadoop 3.1.0 • Directory/Partition 模式: • Task写数据时,写到本地磁盘。 • Support mode • Task Commit时,Multipart upload到S3,并将part信 • Directory:依赖HDFS 息记录到HDFS上。 • Partitioned:依赖HDFS • Job Commit时,从HDFS获取part信息,complete • Magic:依赖S3Guard multipart upload。 • Magic模式: • Task写数据时,multipart upload到S3,在S3上记录 part信息. • Task Commit时,将Task所有part信息合并记录在S3 上。 • Job Commit时,从S3获取所有part信息,complete multipart upload。
13 .性能测试对比 500G TeraGen测试 4台阿里云ecs.r6.4xlarge规格机器 16核/128G
14 .性能测试对比 500G TeraGen测试 4台阿里云ecs.r6.4xlarge规格机器 16核/128G
15 .THANKS/感谢聆听