1. 程式人生 > >Hadoop權威指南---MapReduce的工作機制

Hadoop權威指南---MapReduce的工作機制

目錄

​2 、失敗 

總結:

map函式--> partition分割槽函式(在記憶體中進行sort排序)-->combiner函式(如果存在,且會符合執行條件)-->map輸出spill溢位臨時檔案(合併為一個已分割槽且排序的)-->copy(複製map的輸出資料到reduce節點)-->合併map的輸出檔案(大於記憶體快取區會溢位到磁碟,在合併階段如果有combiner函式,也會執行,減少寫入磁碟的資料量,壓縮的map輸出也會再記憶體中解壓)-->合併map輸出的資料檔案為一個排序的檔案輸入reduce。

引數設定:

  1. MapReduce.task.timeout   :map和reduce任務在指定的時間內沒有向application master更新進度,就會被殺死,單位是毫秒,預設是10分鐘,如果設定為0,將關閉超時判定,長時間執行的任務永遠也不會被標記為失敗,在這種情況下被掛起的任務永遠不會被釋放,隨著時間的推移最終降低整個叢集的效率,不建議;
  2. MapReduce.map.maxattempts、MapReduce.reduce.maxattempts 設定application master在任務失敗後,重新排程該任務執行的次數,預設是4次;
  3. MapReduce.map.failures.maxpercent、MapReduce.reduce.failures.maxpercent 在一些作業中不希望一旦有少數幾個任務失敗就終止執行整個作業因為即使任務失敗,作業的一些結果可能還是可用的,可以通過這兩個引數來設定執行任務失敗的最大百分比;
  4. MapReduce.am.max-attempts   設定application master任務失敗後重試的次數,預設為2;
  5. yarn.app.mapreduce.am.job.recovery.enable 設定application master通過作業歷史來恢復失敗的應用程式所執行的狀態,預設是true開啟;
  6. yarn.resourcemanager.nm.liveness-monitor.expiry-interval-ms 單位毫秒,節點管理器向資源管理器傳送心跳資訊的最大時間間隔,超過了,資源管理器會通知停止傳送心跳資訊的節點管理器,並且將其從自己的節點池中移除以排程啟動容器;
  7. mapreduce.task.io.sort.mb    預設100M,Map端資料排序可用記憶體緩衝區,如果記憶體充裕建議調大至256M或512M,可提升排序效能;
  8. mapreduce.map.sort.spill.percent  緩衝區的閾值,預設80%。達到閾值就會把緩衝區的內容寫到磁碟上mapreduce.cluster.local.dir指定的目錄下;
  9. mapreduce.task.io.sort.factor 把溢位檔案合併成一個已分割槽且已排序的輸出檔案,這個引數控制著一次最多能夠合併多少流,預設值是10;
  10. mapreduce.map.combine.minspills設定啟用combiner的最少溢位檔案的個數,預設為3,一旦少於,由於map輸出規模的減少,不值得呼叫combiner;
  11. mapreduce.map.output.compress 是否把map的輸出壓縮輸出到磁碟上,預設是不壓縮false,開啟是true;
  12. mapreduce.map.output.compress.codec 指定壓縮格式;
  13. mapreduce.shuffle.max.threads  reducer用於得到輸出檔案分割槽的工作執行緒數,預設值為0,將最多執行緒數設定為機器處理器數量的兩倍;
  14. mapreduce.reduce.shuffle.parallelcopies 設定reduce從map輸出資料copy資料到reduce任務節點的併發執行緒數;

1、 剖析MapReduce作業執行機制 

1.1、 作業的提交 

1.2、 作業的初始化 

1.3、 任務的分配 

1.4 、任務的執行 

1.5、 進度和狀態的更新

1.6、 作業的完成 

2 、失敗 

2.1、 任務執行失敗

2.2、 application master執行失敗

2.3 、節點管理器執行失敗 

2.4 、資源管理器執行失敗 

3、 shuffle和排序 

3.1 、map端 

3.2、 reduce端 

3.3 、配置調優 

4 、任務的執行

4.1 、任務執行環境 

4.2 、推測執行 

4.3 、關於OutputCommitters

參考:

Hadoop權威指南.大資料的儲存與分析.第4版--第7章 MapReduce的工作機制