一、資源相關參數
1)以下參數是在用戶自己的mr應用程序中配置就可以生效(mapred-default.xml)
配置參數 |
參數說明 |
mapreduce.map.memory.mb |
一個Map Task可使用的資源上限(單位:MB),默認爲1024。如果Map Task實際使用的資源量超過該值,則會被強制殺死。 |
mapreduce.reduce.memory.mb |
一個Reduce Task可使用的資源上限(單位:MB),默認爲1024。如果Reduce Task實際使用的資源量超過該值,則會被強制殺死。 |
mapreduce.map.cpu.vcores |
每個Map task可使用的最多cpu core數目,默認值: 1 |
mapreduce.reduce.cpu.vcores |
每個Reduce task可使用的最多cpu core數目,默認值: 1 |
mapreduce.reduce.shuffle.parallelcopies |
每個reduce去map中拿數據的並行數。默認值是5 |
mapreduce.reduce.shuffle.merge.percent |
buffer中的數據達到多少比例開始寫入磁盤。默認值0.66 |
mapreduce.reduce.shuffle.input.buffer.percent |
buffer大小佔reduce可用內存的比例。默認值0.7 |
mapreduce.reduce.input.buffer.percent |
指定多少比例的內存用來存放buffer中的數據,默認值是0.0 |
2)應該在yarn啓動之前就配置在服務器的配置文件中才能生效(yarn-default.xml)
配置參數 |
參數說明 |
yarn.scheduler.minimum-allocation-mb 1024 |
給應用程序container分配的最小內存 |
yarn.scheduler.maximum-allocation-mb 8192 |
給應用程序container分配的最大內存 |
yarn.scheduler.minimum-allocation-vcores 1 |
每個container申請的最小CPU核數 |
yarn.scheduler.maximum-allocation-vcores 32 |
每個container申請的最大CPU核數 |
yarn.nodemanager.resource.memory-mb 8192 |
給containers分配的最大物理內存 |
3)shuffle性能優化的關鍵參數,應在yarn啓動之前就配置好(mapred-default.xml)
配置參數 |
參數說明 |
mapreduce.task.io.sort.mb 100 |
shuffle的環形緩衝區大小,默認100m |
mapreduce.map.sort.spill.percent 0.8 |
環形緩衝區溢出的閾值,默認80% |
二、容錯相關參數(mapreduce性能優化)
配置參數 |
參數說明 |
mapreduce.map.maxattempts |
每個Map Task最大重試次數,一旦重試參數超過該值,則認爲Map Task運行失敗,默認值:4。 |
mapreduce.reduce.maxattempts |
每個Reduce Task最大重試次數,一旦重試參數超過該值,則認爲Map Task運行失敗,默認值:4。 |
mapreduce.task.timeout |
Task超時時間,經常需要設置的一個參數,該參數表達的意思爲:如果一個task在一定時間內沒有任何進入,即不會讀取新的數據,也沒有輸出數據,則認爲該task處於block狀態,可能是卡住了,也許永遠會卡主,爲了防止因爲用戶程序永遠block住不退出,則強制設置了一個該超時時間(單位毫秒),默認是600000。如果你的程序對每條輸入數據的處理時間過長(比如會訪問數據庫,通過網絡拉取數據等),建議將該參數調大,該參數過小常出現的錯誤提示是“AttemptID:attempt_14267829456721_123456_m_000224_0 Timed out after 300 secsContainer killed by the ApplicationMaster.”。 |