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配置
- 进入集群服务页面。
- 登录EMR on ECS控制台。
- 在顶部菜单栏处,根据实际情况选择地域和资源组。
- 单击目标集群操作列的集群服务。
- 进入YARN服务的mapred-site.xml页签。
- 在集群服务页面,单击YARN服务区域的配置。
- 在配置页签,单击mapred-site.xml。
- 修改配置项。
版本 参数 描述 EMR Hadoop 2.x版本 mapreduce.outputcommitter.class 删除参数值,即将参数值置为空。 例如,搜索mapreduce.outputcommitter.class配置,删除参数值。
EMR Hadoop 3.x版本 mapreduce.outputcommitter.factory.class 删除参数值,即将参数值置为空。 - 保存配置。
- 单击保存。
- 在弹出的对话框中,输入执行原因,单击保存。
- 重启YARN服务。
- 选择右侧的 。
- 在弹出的对话框中,输入执行原因,单击确定。
- 在弹出的对话框中,单击确定。
步骤二:修改Spark配置
- 进入Spark服务的spark-defaults.conf页签。
- 在集群服务页面,单击Spark服务区域的配置。
- 在配置页签,单击spark-defaults.conf。
- 修改配置项。
参数 描述 spark.sql.sources.outputCommitterClass 删除参数值,即将参数值置为空。 spark.sql.parquet.output.committer.class 固定值为org.apache.parquet.hadoop.ParquetOutputCommitter。 - 可选:如果您集群的Spark是2.x版本,则还需在spark-defaults.conf页签,单击新增配置项,新增参数为spark.sql.hive.commitProtocolClass,参数值为org.apache.spark.sql.execution.datasources.SQLHadoopMapReduceCommitProtocol的配置项。
- 保存配置。
- 单击保存。
- 在弹出的对话框中,输入执行原因,单击保存。
- 重启Spark服务。
- 选择右侧的 。
- 在弹出的对话框中,输入执行原因,单击确定。
- 在弹出的对话框中,单击确定。