Jindo Job Committer使用說明
本文主要介紹JindoOssCommitter的使用說明。
背景資訊
Job Committer是MapReduce和Spark等分散式運算架構的一個基礎組件,用來處理分布式任務寫資料的一致性問題。
Jindo Job Committer是阿里雲E-MapReduce針對OSS情境開發的高效Job Committer的實現,基於OSS的Multipart Upload介面,結合OSS Filesystem層的定製化支援。使用Jindo Job Committer時,Task資料直接寫到最終目錄中,在完成Job Commit前,中間資料對外不可見,徹底避免了Rename操作,同時保證資料的一致性。
OSS拷貝資料的效能,針對不同的使用者或Bucket會有差異,可能與OSS頻寬以及是否開啟某些進階特性等因素有關,具體問題可以諮詢OSS的支援人員。
在所有任務都完成後,MapReduce Application Master或Spark Driver執行最終的Job Commit操作時,會有一個短暫的時間視窗。時間視窗的大小和檔案數量線性相關,可以通過增大
fs.oss.committer.threads可以提高並發處理的速度。Hive和Presto等沒有使用Hadoop的Job Committer。
E-MapReduce叢集中預設開啟Jindo Oss Committer的參數。
在MapReduce中使用Jindo Job Committer
進入YARN服務的mapred-site頁簽。
在頂部功能表列處,根據實際情況選擇地區和資源群組。
單擊上方的集群管理頁簽。
在集群管理頁面,單擊相應叢集所在行的详情。
在左側導覽列單擊。
單擊配置頁簽。
在服务配置地區,單擊mapred-site頁簽。
針對Hadoop不同版本,在YARN服務中配置以下參數。
Hadoop 2.x版本
在YARN服務的mapred-site頁簽,設定mapreduce.outputcommitter.class為com.aliyun.emr.fs.oss.commit.JindoOssCommitter。
Hadoop 3.x版本
在YARN服務的mapred-site頁簽,設定mapreduce.outputcommitter.factory.scheme.oss為com.aliyun.emr.fs.oss.commit.JindoOssCommitterFactory。
儲存配置。
單擊右上方的保存。
在确认修改對話方塊中,輸入執行原因,開啟自動更新配置。
單擊确定。
進入SmartData服務的smartdata-site頁簽。
在左側導覽列單擊。
單擊配置頁簽。
在服务配置地區,單擊smartdata-site頁簽。
在SmartData服務的smartdata-site頁簽,設定fs.oss.committer.magic.enabled為true。
儲存配置。
單擊右上方的保存。
在确认修改對話方塊中,輸入執行原因,開啟自動更新配置。
單擊确定。
在設定mapreduce.outputcommitter.class為com.aliyun.emr.fs.oss.commit.JindoOssCommitter後,可以通過開關fs.oss.committer.magic.enabled便捷地控制所使用的Job Committer。當開啟時,MapReduce任務會使用無需Rename操作的Jindo Oss Magic Committer,當關閉時,JindoOssCommitter和FileOutputCommitter行為一樣。
在Spark中使用Jindo Job Committer
進入Spark服務的spark-defaults頁簽。
在左側導覽列單擊。
單擊配置頁簽。
在服务配置地區,單擊spark-defaults頁簽。
在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。
儲存配置。
單擊右上方的保存。
在确认修改對話方塊中,輸入執行原因,開啟自動更新配置。
單擊确定。
進入SmartData服務的smartdata-site頁簽。
在左側導覽列單擊。
單擊配置頁簽。
在服务配置地區,單擊smartdata-site頁簽。
在SmartData服務的smartdata-site頁簽,設定fs.oss.committer.magic.enabled為true。
說明您可以通過開關
fs.oss.committer.magic.enabled便捷地控制所使用的Job Committer。當開啟時,Spark任務會使用無需Rename操作的Jindo Oss Magic Committer,當關閉時,JindoOssCommitter和FileOutputCommitter行為一樣。儲存配置。
單擊右上方的保存。
在确认修改對話方塊中,輸入執行原因,開啟自動更新配置。
單擊确定。
最佳化Jindo Job Committer效能
當MapReduce或Spark任務寫大量檔案的時候,您可以調整MapReduce Application Master或Spark Driver中並發執行Commit相關任務的線程數量,提升Job Commit效能。
進入SmartData服務的smartdata-site頁簽。
在左側導覽列單擊。
單擊配置頁簽。
在服务配置地區,單擊smartdata-site頁簽。
在SmartData服務的smartdata-site頁簽,設定fs.oss.committer.threads為8。
預設值為8。
儲存配置。
單擊右上方的保存。
在确认修改對話方塊中,輸入執行原因,開啟自動更新配置。
單擊确定。