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. 在彈出的對話框中,單擊確定