本文主要介绍JindoOssCommitter的使用说明。
背景信息
Job Committer是MapReduce和Spark等分布式计算框架的一个基础组件,用来处理分布式任务写数据的一致性问题。
Jindo Job Committer是阿里云E-MapReduce针对OSS场景开发的高效Job Committer的实现,基于OSS的Multipart Upload接口,结合OSS Filesystem层的定制化支持。使用Jindo Job Committer时,Task数据直接写到最终目录中,在完成Job Commit前,中间数据对外不可见,彻底避免了Rename操作,同时保证数据的一致性。
- OSS拷贝数据的性能,针对不同的用户或Bucket会有差异,可能与OSS带宽以及是否开启某些高级特性等因素有关,具体问题可以咨询OSS的技术支持。
- 在所有任务都完成后,MapReduce Application Master或Spark Driver执行最终的Job Commit操作时,会有一个短暂的时间窗口。时间窗口的大小和文件数量线性相关,可以通过增大
fs.oss.committer.threads
可以提高并发处理的速度。 - Hive和Presto等没有使用Hadoop的Job Committer。
- E-MapReduce集群中默认打开Jindo Oss Committer的参数。
在MapReduce中使用Jindo Job Committer
- 进入YARN服务的mapred-site页签。
- 登录阿里云E-MapReduce控制台。
- 在顶部菜单栏处,根据实际情况选择地域(Region)和资源组。
- 单击上方的集群管理页签。
- 在集群管理页面,单击相应集群所在行的详情。
- 在左侧导航栏单击 。
- 单击配置页签。
- 在服务配置区域,单击mapred-site页签。
- 针对Hadoop不同版本,在YARN服务中配置以下参数。
- Hadoop 2.x版本
在YARN服务的mapred-site页签,设置mapreduce.outputcommitter.class为com.aliyun.emr.fs.oss.commit.JindoOssCommitter。
- Hadoop 3.x版本
在YARN服务的mapred-site页签,设置mapreduce.outputcommitter.factory.scheme.oss为com.aliyun.emr.fs.oss.commit.JindoOssCommitterFactory。
- Hadoop 2.x版本
- 保存配置。
- 单击右上角的保存。
- 在确认修改对话框中,输入执行原因,开启自动更新配置。
- 单击确定。
- 进入SmartData服务的smartdata-site页签。
- 在左侧导航栏单击 。
- 单击配置页签。
- 在服务配置区域,单击smartdata-site页签。
- 在SmartData服务的smartdata-site页签,设置fs.oss.committer.magic.enabled为true。
- 保存配置。
- 单击右上角的保存。
- 在确认修改对话框中,输入执行原因,开启自动更新配置。
- 单击确定。
在Spark中使用Jindo Job Committer
优化Jindo Job Committer性能
当MapReduce或Spark任务写大量文件的时候,您可以调整MapReduce Application Master或Spark Driver中并发执行Commit相关任务的线程数量,提升Job Commit性能。