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服務。
- 選擇右側的 。
- 在彈出的對話框中,輸入執行原因,單擊確定。
- 在彈出的對話框中,單擊確定。