1. 程式人生 > >MapReduce優化參數

MapReduce優化參數

程序 產生 失敗 總量 manage 生效 輸入 使用 進入

1. 資源相關參數
//以下參數是在用戶自己的MapReduce應用程序中配置就可以生效
(1) mapreduce.map.memory.mb: 一個Map Task可使用的內存上限(單位:MB),默認為1024。如果Map Task實際使用的資源量超過該值,則會被強制殺死。
(2) mapreduce.reduce.memory.mb: 一個Reduce Task可使用的資源上限(單位:MB),默認為1024。如果Reduce Task實際使用的資源量超過該值,則會被強制殺死。
(3) mapreduce.map.cpu.vcores: 每個Maptask可用的最多cpu core數目, 默認值: 1
(4) mapreduce.reduce.cpu.vcores: 每個Reducetask可用最多cpu core數目默認值: 1
(5) mapreduce.map.java.opts: Map Task的JVM參數,你可以在此配置默認的java heap
size等參數, 例如:“-Xmx1024m -verbose:gc -Xloggc:/tmp/@[email protected]
(@taskid@會被Hadoop框架自動換為相應的taskid), 默認值: “”
(6) mapreduce.reduce.java.opts: Reduce Task的JVM參數,你可以在此配置默認的java
heap size等參數, 例如:“-Xmx1024m -verbose:gc -Xloggc:/tmp/@[email protected]”, 默認值: “”
//應該在yarn啟動之前就配置在服務器的配置文件中才能生效
(1) yarn.scheduler.minimum-allocation-mb RM中每個容器請求的最小配置,以MB為單位,默認1024。
(2) yarn.scheduler.maximum-allocation-mb RM中每個容器請求的最大分配,以MB為單位,默認8192。
(3) yarn.scheduler.minimum-allocation-vcores 1
(4)yarn.scheduler.maximum-allocation-vcores 32
(5) yarn.nodemanager.resource.memory-mb 表示該節點上YARN可使用的物理內存總量,默認是8192(MB),註意,如果你的節點內存資源不夠8GB,則需要調減小這個值,而YARN不會智能的探測節點的物理內存總量。
//shuffle性能優化的關鍵參數,應在yarn啟動之前就配置好
(1) mapreduce.task.io.sort.mb 100 shuffle的環形緩沖區大小,默認100m
(2) mapreduce.map.sort.spill.percent 0.8 環形緩沖區溢出的閾值,默認80%
2. 容錯相關參數
(1) mapreduce.map.maxattempts: 每個Map Task最大重試次數,一旦重試參數超過該值,則認為Map Task運行失敗,默認值:4。
(2) mapreduce.reduce.maxattempts: 每個Reduce Task最大重試次數,一旦重試參數超過該值,則認為Map Task運行失敗,默認值:4。
(3) mapreduce.map.failures.maxpercent: 當失敗的Map Task失敗比例超過該值,整個作業則失敗,默認值為0. 如果你的應用程序允許丟棄部分輸入數據,則該該值設為一個大於0的值,比如5,表示如果有低於5%的Map Task失敗(如果一個Map Task重試次數超過mapreduce.map.maxattempts,則認為這個Map Task失敗,其對應的輸入數據將不會產生任何結果),整個作業扔認為成功。
(4) mapreduce.reduce.failures.maxpercent: 當失敗的Reduce Task失敗比例超過該值為,整個作業則失敗,默認值為0.
(5) mapreduce.task.timeout:如果一個task在一定時間內沒有任何進入,即不會讀取新的數據,也沒有輸出數據,則認為該task處於block狀態,可能是臨時卡住,也許永遠會卡住。為了防止因為用戶程序永遠block不退出,則強制設置了一個超時時間(單位毫秒),默認是600000,值為0將禁用超時。。
3. 效率跟穩定性參數
(1) mapreduce.map.speculative: 是否為Map Task打開推測執行機制,默認為true, 如果為true,則可以並行執行一些Map任務的多個實例。
(2) mapreduce.reduce.speculative: 是否為Reduce Task打開推測執行機制,默認為true
(3)mapreduce.input.fileinputformat.split.minsize: FileInputFormat做切片時最小切片大小,默認1。
(5)mapreduce.input.fileinputformat.split.maxsize: FileInputFormat做切片時最大切片大小
推測執行機制(Speculative Execution):它根據一定的法則推測出“拖後腿”的任務,並為這樣的任務啟動一個備份任務,讓該任務與原始任務同時處理同一份數據,並最終選用最先成功運行完成任務的計算結果作為最終結果。

MapReduce優化參數