MapReduce優化方法總結
1 MapReduce 跑的慢的原因
2 MapReduce優化方法
MapReduce優化方法主要從六個方面考慮:資料輸入、Map階段、Reduce階段、IO傳輸、資料傾斜問題和常用的調優引數。
1 資料輸入
2 Map階段
3 Reduce階段
4 I/O傳輸
5 資料傾斜問題
6 常用的調優引數
1.資源相關引數
(1)以下引數是在使用者自己的MR應用程式中配置就可以生效(mapred-default.xml)
表4-12
配置引數 |
引數說明 |
mapreduce.map.memory.mb |
一個MapTask可使用的資源上限(單位:MB),預設為1024。如果MapTask實際使用的資源量超過該值,則會被強制殺死。 |
mapreduce.reduce.memory.mb |
一個ReduceTask可使用的資源上限(單位:MB),預設為1024。如果ReduceTask實際使用的資源量超過該值,則會被強制殺死。 |
mapreduce.map.cpu.vcores |
每個MapTask可使用的最多cpu core數目,預設值: 1 |
mapreduce.reduce.cpu.vcores |
每個ReduceTask可使用的最多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)
表4-13
配置引數 |
引數說明 |
yarn.scheduler.minimum-allocation-mb |
給應用程式Container分配的最小記憶體,預設值:1024 |
yarn.scheduler.maximum-allocation-mb |
給應用程式Container分配的最大記憶體,預設值:8192 |
yarn.scheduler.minimum-allocation-vcores |
每個Container申請的最小CPU核數,預設值:1 |
yarn.scheduler.maximum-allocation-vcores |
每個Container申請的最大CPU核數,預設值:32 |
yarn.nodemanager.resource.memory-mb |
給Containers分配的最大實體記憶體,預設值:8192 |
(3)Shuffle效能優化的關鍵引數,應在YARN啟動之前就配置好(mapred-default.xml)
表4-14
配置引數 |
引數說明 |
mapreduce.task.io.sort.mb |
Shuffle的環形緩衝區大小,預設100m |
mapreduce.map.sort.spill.percent |
環形緩衝區溢位的閾值,預設80% |
2.容錯相關引數(MapReduce效能優化)
表4-15
配置引數 |
引數說明 |
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.”。 |