MapReduce 基本優化相關參數


MapReduce優化
優化(1)資源相關參數:
以下參數是在自己的 MapReduce 應用程序中配置就可以生效

mapreduce.map.memory.mb: 一個 Map Task 可使用的內存上限(單位:MB),默認為 1024。如果 Map Task 實際使用的資源量超過該值,則會被強制殺死。
mapreduce.reduce.memory.mb: 一個 Reduce Task 可使用的資源上限(單位:MB),默認為 1024。如果 Reduce Task 實際使用的資源量超過該值,則會被強制殺死。
mapreduce.map.cpu.vcores: 每個 Maptask 可用的最多 cpu core 數目, 默認值: 1
mapreduce.reduce.cpu.vcores: 每個 Reducetask 可用最多 cpu core 數目默認值: 1
mapreduce.map.java.opts: Map Task 的 JVM 參數,你可以在此配置默認的 java heap size 等參數, 例如:“-Xmx1024m -verbose:gc -Xloggc:/tmp/@taskid@.gc”
(@taskid@會被 Hadoop 框架自動換為相應的 taskid), 默認值: “”
mapreduce.reduce.java.opts: Reduce Task 的 JVM 參數,你可以在此配置默認的 java heap size 等參數, 例如:“-Xmx1024m -verbose:gc -Xloggc:/tmp/@taskid@.gc”, 默認值: “”
應該在 yarn 啟動之前就配置在服務器的配置文件中才能生效

yarn.scheduler.minimum-allocation-mb RM 中每個容器請求的最小配置,以 MB 為單位,默認 1024。
yarn.scheduler.maximum-allocation-mb RM 中每個容器請求的最大分配,以 MB 為單位,默認 8192。
yarn.scheduler.minimum-allocation-vcores 1
yarn.scheduler.maximum-allocation-vcores 32
yarn.nodemanager.resource.memory-mb 表示該節點上YARN可使用的物理內存總量,默認是 8192(MB),注意,如果你的節點內存資源不夠 8GB,則需要調減小這個值,而 YARN不會智能的探測節點的物理內存總量。
shuffle 性能優化的關鍵參數,應在 yarn 啟動之前就配置好

mapreduce.task.io.sort.mb 100 shuffle 的環形緩沖區大小,默認 100m
mapreduce.map.sort.spill.percent 0.8 環形緩沖區溢出的閾值,默認 80%

 

 

優化(2)容錯相關參數:
mapreduce.map.maxattempts: 每個 Map Task 最大重試次數,一旦重試參數超過該值,則認為 Map Task 運行失敗,默認值:4。

mapreduce.reduce.maxattempts: 每個Reduce Task最大重試次數,一旦重試參數超過該值,則認為 Map Task 運行失敗,默認值:4。

mapreduce.map.failures.maxpercent: 當失敗的 Map Task 失敗比例超過該值,整個作業則失敗,默認值為 0. 如果你的應用程序允許丟棄部分輸入數據,則該該值設為一個大於 0 的值,比如 5,表示如果有低於 5%的 Map Task 失敗(如果一個 Map Task 重試次數超過mapreduce.map.maxattempts,則認為這個 Map Task 失敗,其對應的輸入數據將不會產生任何結果),整個作業扔認為成功。

mapreduce.reduce.failures.maxpercent: 當失敗的 Reduce Task 失敗比例超過該值為,整個作業則失敗,默認值為 0.

mapreduce.task.timeout:如果一個task在一定時間內沒有任何進入,即不會讀取新的數據,也沒有輸出數據,則認為該 task 處於 block 狀態,可能是臨時卡住,也許永遠會卡住。為了防止因為用戶程序永遠 block 不退出,則強制設置了一個超時時間(單位毫秒),默認是600000,值為 0 將禁用超時。

 

 

優化(3)效率跟穩定性參數(任務的推測執行):
Straggle(掉隊者)是指那些跑的很慢但最終會成功完成的任務。一個掉隊的Map任務會阻止Reduce任務開始執行。

Hadoop不能自動糾正掉隊任務,但是可以識別那些跑的比較慢的任務,然后它會產生另一個等效的任務作為備份,並使用首先完成的那個任務的結果,此時另外一個任務則會被要求停止執行。這種技術稱為推測執行(speculative execution)。

默認使用推測執行。
屬性                                                                                           描述
mapreduce.map.speculative                                                     控制Map任務的推測執行(默認true)
mapreduce.reduce.speculative                                                 控制Reduce任務的推測執行(默認true)
mapreduce.job.speculative.speculativecap                              推測執行功能的任務能夠占總任務數量的比例(默認0.1,范圍0~1)
mapreduce.job.speculative.slownodethreshold                        判斷某個TaskTracker是否適合啟動某個task的speculative task(默認1)
mapreduce.job.speculative.slowtaskthreshold                         判斷某個task是否可以啟動speculative task(默認1)
mapreduce.input.fileinputformat.split.minsize                          FileInputFormat做切片時最小切片大小,默認 1。

mapreduce.input.fileinputformat.split.maxsize                         FileInputFormat做切片時最大切片大小


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM