Jindo Job Committer使用說明

更新時間:
Copy as MD

本文主要介紹JindoOssCommitter的使用說明。

背景資訊

Job CommitterMapReduceSpark等分散式運算架構的一個基礎組件,用來處理分布式任務寫資料的一致性問題。

Jindo Job Committer是阿里雲E-MapReduce針對OSS情境開發的高效Job Committer的實現,基於OSSMultipart Upload介面,結合OSS Filesystem層的定製化支援。使用Jindo Job Committer時,Task資料直接寫到最終目錄中,在完成Job Commit前,中間資料對外不可見,徹底避免了Rename操作,同時保證資料的一致性。

重要
  • OSS拷貝資料的效能,針對不同的使用者或Bucket會有差異,可能與OSS頻寬以及是否開啟某些進階特性等因素有關,具體問題可以諮詢OSS的支援人員。

  • 在所有任務都完成後,MapReduce Application MasterSpark Driver執行最終的Job Commit操作時,會有一個短暫的時間視窗。時間視窗的大小和檔案數量線性相關,可以通過增大fs.oss.committer.threads可以提高並發處理的速度。

  • HivePresto等沒有使用HadoopJob Committer。

  • E-MapReduce叢集中預設開啟Jindo Oss Committer的參數。

MapReduce中使用Jindo Job Committer

  1. 進入YARN服務的mapred-site頁簽。

    1. 登入E-MapReduce控制台

    2. 在頂部功能表列處,根據實際情況選擇地區和資源群組

    3. 單擊上方的集群管理頁簽。

    4. 集群管理頁面,單擊相應叢集所在行的详情

    5. 在左側導覽列單擊集群服务 > YARN

    6. 單擊配置頁簽。

    7. 服务配置地區,單擊mapred-site頁簽。

  2. 針對Hadoop不同版本,在YARN服務中配置以下參數。

    • Hadoop 2.x版本

      YARN服務的mapred-site頁簽,設定mapreduce.outputcommitter.classcom.aliyun.emr.fs.oss.commit.JindoOssCommitter

    • Hadoop 3.x版本

      YARN服務的mapred-site頁簽,設定mapreduce.outputcommitter.factory.scheme.osscom.aliyun.emr.fs.oss.commit.JindoOssCommitterFactory

  3. 儲存配置。

    1. 單擊右上方的保存

    2. 确认修改對話方塊中,輸入執行原因,開啟自動更新配置

    3. 單擊确定

  4. 進入SmartData服務的smartdata-site頁簽。

    1. 在左側導覽列單擊集群服务 > SmartData

    2. 單擊配置頁簽。

    3. 服务配置地區,單擊smartdata-site頁簽。

  5. SmartData服務的smartdata-site頁簽,設定fs.oss.committer.magic.enabledtrue

  6. 儲存配置。

    1. 單擊右上方的保存

    2. 确认修改對話方塊中,輸入執行原因,開啟自動更新配置

    3. 單擊确定

說明

在設定mapreduce.outputcommitter.classcom.aliyun.emr.fs.oss.commit.JindoOssCommitter後,可以通過開關fs.oss.committer.magic.enabled便捷地控制所使用的Job Committer。當開啟時,MapReduce任務會使用無需Rename操作的Jindo Oss Magic Committer,當關閉時,JindoOssCommitterFileOutputCommitter行為一樣。

Spark中使用Jindo Job Committer

  1. 進入Spark服務的spark-defaults頁簽。

    1. 在左側導覽列單擊集群服务 > Spark

    2. 單擊配置頁簽。

    3. 服务配置地區,單擊spark-defaults頁簽。

  2. Spark服務的spark-defaults頁簽,設定以下參數。

    參數

    參數值

    spark.sql.sources.outputCommitterClass

    com.aliyun.emr.fs.oss.commit.JindoOssCommitter

    spark.sql.parquet.output.committer.class

    com.aliyun.emr.fs.oss.commit.JindoOssCommitter

    spark.sql.hive.outputCommitterClass

    com.aliyun.emr.fs.oss.commit.JindoOssCommitter

    這三個參數分別用來設定寫入資料到Spark DataSource表、Spark Parquet格式的DataSource表和Hive表時使用的Job Committer。

  3. 儲存配置。

    1. 單擊右上方的保存

    2. 确认修改對話方塊中,輸入執行原因,開啟自動更新配置

    3. 單擊确定

  4. 進入SmartData服務的smartdata-site頁簽。

    1. 在左側導覽列單擊集群服务 > SmartData

    2. 單擊配置頁簽。

    3. 服务配置地區,單擊smartdata-site頁簽。

  5. SmartData服務的smartdata-site頁簽,設定fs.oss.committer.magic.enabledtrue

    說明

    您可以通過開關fs.oss.committer.magic.enabled便捷地控制所使用的Job Committer。當開啟時,Spark任務會使用無需Rename操作的Jindo Oss Magic Committer,當關閉時,JindoOssCommitterFileOutputCommitter行為一樣。

  6. 儲存配置。

    1. 單擊右上方的保存

    2. 确认修改對話方塊中,輸入執行原因,開啟自動更新配置

    3. 單擊确定

最佳化Jindo Job Committer效能

MapReduceSpark任務寫大量檔案的時候,您可以調整MapReduce Application MasterSpark Driver中並發執行Commit相關任務的線程數量,提升Job Commit效能。

  1. 進入SmartData服務的smartdata-site頁簽。

    1. 在左側導覽列單擊集群服务 > SmartData

    2. 單擊配置頁簽。

    3. 服务配置地區,單擊smartdata-site頁簽。

  2. SmartData服務的smartdata-site頁簽,設定fs.oss.committer.threads8

    預設值為8。

  3. 儲存配置。

    1. 單擊右上方的保存

    2. 确认修改對話方塊中,輸入執行原因,開啟自動更新配置

    3. 單擊确定