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

前提条件

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

步骤一:修改YARN配置

  1. 进入集群服务页面。
    1. 登录EMR on ECS控制台
    2. 在顶部菜单栏处,根据实际情况选择地域和资源组
    3. 单击目标集群操作列的集群服务
  2. 进入YARN服务的mapred-site.xml页签。
    1. 集群服务页面,单击YARN服务区域的配置
    2. 配置页签,单击mapred-site.xml
  3. 修改配置项。
    版本参数描述
    EMR Hadoop 2.x版本mapreduce.outputcommitter.class删除参数值,即将参数值置为空。

    例如,搜索mapreduce.outputcommitter.class配置,删除参数值。

    EMR Hadoop 3.x版本mapreduce.outputcommitter.factory.class删除参数值,即将参数值置为空。
  4. 保存配置。
    1. 单击保存
    2. 在弹出的对话框中,输入执行原因,单击保存
  5. 重启YARN服务。
    1. 选择右侧的更多操作 > 重启
    2. 在弹出的对话框中,输入执行原因,单击确定
    3. 在弹出的对话框中,单击确定

步骤二:修改Spark配置

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