E-MapReduce(简称EMR)集群默认使用JindoCommitter加速大数据作业,解决OSS等对象存储在Spark、MapReduce等作业使用原生Hadoop JobCommitter时遇到的性能和一致性等问题。如果您不想使用默认的JindoCommitter,则可以参照本文切换为Hadoop原生的JobCommitter。本文为您介绍如何切换为Hadoop原生的JobCommitter。

前提条件

已在E-MapReduce上创建EMR-3.40.0版本或EMR-5.6.0版本的集群,具体操作请参见创建集群
说明 本文以EMR-3.40.0版本为例介绍。

步骤一:修改YARN配置

  1. 进入YARN服务的mapred-site.xml页签。
    1. 登录EMR on ECS控制台
    2. 在顶部菜单栏处,根据实际情况选择地域和资源组
    3. 集群管理页面,单击目标集群操作列的集群服务
    4. 集群服务页签,单击YARN服务区域的配置
    5. 单击mapred-site.xml页签。
  2. 修改配置项。
    版本参数描述
    EMR Hadoop 2.x版本mapreduce.outputcommitter.class删除参数值,将参数值置为空。
    例如,搜索mapreduce.outputcommitter.class配置,删除参数值。yarn
    EMR Hadoop 3.x版本mapreduce.outputcommitter.factory.class删除参数值,将参数值置为空。
  3. 保存配置。
    1. 单击保存
    2. 在弹出的对话框中,输入执行原因,单击保存
  4. 重启YARN服务,详情请参见操作步骤

步骤二:修改Spark配置

  1. 进入Spark服务的spark-default页签。
    1. 集群服务页签,单击Spark服务区域的配置
    2. 单击spark-defaults页签。
  2. 修改配置项。
    参数描述
    spark.sql.sources.outputCommitterClass删除参数值,将参数值置为空。
    spark.sql.parquet.output.committer.class固定值为org.apache.parquet.hadoop.ParquetOutputCommitter
  3. 可选:如果您集群的Spark是2.x版本,则还需在spark-defaults页签新增以下配置项。
    1. 单击新增配置项
    2. 新增参数为spark.sql.hive.commitProtocolClass,参数值为org.apache.spark.sql.execution.datasources.SQLHadoopMapReduceCommitProtocol的配置项。
    3. 单击确定
  4. 保存配置。
    1. 单击保存
    2. 在弹出的对话框中,输入执行原因,单击保存
  5. 重启Spark服务,详情请参见操作步骤