Jindo Job Committer使用说明

更新时间:
复制为 MD 格式

本文主要介绍JindoOssCommitter的使用说明。

背景信息

Job CommitterMapReduceSpark等分布式计算框架的一个基础组件,用来处理分布式任务写数据的一致性问题。

Jindo Job Committer是阿里云E-MapReduce针对OSS场景开发的高效Job Committer的实现,基于OSSMultipart Upload接口,结合OSS Filesystem层的定制化支持。使用Jindo Job Committer时,Task数据直接写到最终目录中,在完成Job Commit前,中间数据对外不可见,彻底避免了Rename操作,同时保证数据的一致性。

重要
  • OSS拷贝数据的性能,针对不同的用户或Bucket会有差异,可能与OSS带宽以及是否开启某些高级特性等因素有关,具体问题可以咨询OSS的技术支持。

  • 在所有任务都完成后,MapReduce Application MasterSpark Driver执行最终的Job Commit操作时,会有一个短暂的时间窗口。时间窗口的大小和文件数量线性相关,可以通过增大fs.oss.committer.threads可以提高并发处理的速度。

  • HivePresto等没有使用HadoopJob Committer。

  • E-MapReduce集群中默认打开Jindo Oss Committer的参数。

MapReduce中使用Jindo Job Committer

  1. 进入YARN服务的mapred-site页签。

    1. 登录E-MapReduce控制台

    2. 在顶部菜单栏处,根据实际情况选择地域和资源组

    3. 单击上方的集群管理页签。

    4. 集群管理页面,单击相应集群所在行的详情

    5. 在左侧导航栏单击集群服务 > YARN

    6. 单击配置页签。

    7. 服务配置区域,单击mapred-site页签。

  2. 针对Hadoop不同版本,在YARN服务中配置以下参数。

    • Hadoop 2.x版本

      YARN服务的mapred-site页签,设置mapreduce.outputcommitter.classcom.aliyun.emr.fs.oss.commit.JindoOssCommitter

    • Hadoop 3.x版本

      YARN服务的mapred-site页签,设置mapreduce.outputcommitter.factory.scheme.osscom.aliyun.emr.fs.oss.commit.JindoOssCommitterFactory

  3. 保存配置。

    1. 单击右上角的保存

    2. 确认修改对话框中,输入执行原因,开启自动更新配置

    3. 单击确定

  4. 进入SmartData服务的smartdata-site页签。

    1. 在左侧导航栏单击集群服务 > SmartData

    2. 单击配置页签。

    3. 服务配置区域,单击smartdata-site页签。

  5. SmartData服务的smartdata-site页签,设置fs.oss.committer.magic.enabledtrue

  6. 保存配置。

    1. 单击右上角的保存

    2. 确认修改对话框中,输入执行原因,开启自动更新配置

    3. 单击确定

说明

在设置mapreduce.outputcommitter.classcom.aliyun.emr.fs.oss.commit.JindoOssCommitter后,可以通过开关fs.oss.committer.magic.enabled便捷地控制所使用的Job Committer。当打开时,MapReduce任务会使用无需Rename操作的Jindo Oss Magic Committer,当关闭时,JindoOssCommitterFileOutputCommitter行为一样。

Spark中使用Jindo Job Committer

  1. 进入Spark服务的spark-defaults页签。

    1. 在左侧导航栏单击集群服务 > Spark

    2. 单击配置页签。

    3. 服务配置区域,单击spark-defaults页签。

  2. Spark服务的spark-defaults页签,设置以下参数。

    参数

    参数值

    spark.sql.sources.outputCommitterClass

    com.aliyun.emr.fs.oss.commit.JindoOssCommitter

    spark.sql.parquet.output.committer.class

    com.aliyun.emr.fs.oss.commit.JindoOssCommitter

    spark.sql.hive.outputCommitterClass

    com.aliyun.emr.fs.oss.commit.JindoOssCommitter

    这三个参数分别用来设置写入数据到Spark DataSource表、Spark Parquet格式的DataSource表和Hive表时使用的Job Committer。

  3. 保存配置。

    1. 单击右上角的保存

    2. 确认修改对话框中,输入执行原因,开启自动更新配置

    3. 单击确定

  4. 进入SmartData服务的smartdata-site页签。

    1. 在左侧导航栏单击集群服务 > SmartData

    2. 单击配置页签。

    3. 服务配置区域,单击smartdata-site页签。

  5. SmartData服务的smartdata-site页签,设置fs.oss.committer.magic.enabledtrue

    说明

    您可以通过开关fs.oss.committer.magic.enabled便捷地控制所使用的Job Committer。当打开时,Spark任务会使用无需Rename操作的Jindo Oss Magic Committer,当关闭时,JindoOssCommitterFileOutputCommitter行为一样。

  6. 保存配置。

    1. 单击右上角的保存

    2. 确认修改对话框中,输入执行原因,开启自动更新配置

    3. 单击确定

优化Jindo Job Committer性能

MapReduceSpark任务写大量文件的时候,您可以调整MapReduce Application MasterSpark Driver中并发执行Commit相关任务的线程数量,提升Job Commit性能。

  1. 进入SmartData服务的smartdata-site页签。

    1. 在左侧导航栏单击集群服务 > SmartData

    2. 单击配置页签。

    3. 服务配置区域,单击smartdata-site页签。

  2. SmartData服务的smartdata-site页签,设置fs.oss.committer.threads8

    默认值为8。

  3. 保存配置。

    1. 单击右上角的保存

    2. 确认修改对话框中,输入执行原因,开启自动更新配置

    3. 单击确定