MapRedue詳細工作流程

2022-08-17 22:39:12 字數 1477 閱讀 6140

mapredue詳細工作流程

簡述

(1)客戶端submit之前獲取待處理的資料資訊,根據引數配置,形成乙個任務分配的規劃。

(2)提交切片資訊到yarn(split.xml,job.split,wc.jar)

(4)啟動maptask

(5)通過inputformat拷貝資料,預設使用textinputformat

(6)執行使用者自定義的map()方法

(7)寫出資料到環形緩衝區

(8)環形緩衝區預設大小是100m,80%溢位檔案。溢位檔案之前對資料進行分割槽排序

(9)環形緩衝區溢寫到檔案中,此時的檔案是分割槽且有序的

(10)對結果檔案進行歸併排序

(11)如果設定有合併操作,執行合併,合併之後再次進行歸併

(12)所有的maptask執行完成之後,啟動相應數量的reducetask,並告知reduce的操作範圍(分割槽)

(13)reduce拷貝map端的輸出檔案,先拷貝到記憶體,記憶體不足,寫入到磁碟

(14)合併檔案,歸併排序,進入reduce方法

(15)如果設定了分組操作,進行分組(分組是為了讓兩個不相同的物件,

通過某乙個條件讓其認為是乙個物件,從而進入到乙個reduce方法中)

(16)執行使用者自定義的reduce方法

(17)通過outputformat將執行的結果輸出到檔案中

1)maptask 收集我們的 map()方法輸出的 kv 對,放到記憶體緩衝區中

2)從記憶體緩衝區不斷溢位本地磁碟檔案,可能會溢位多個檔案

3)多個溢位檔案會被合併成大的溢位檔案

4)在溢位過程中,及合併的過程中,都要呼叫 partitioner 進行分割槽和針對 key 進行排

序5)reducetask 根據自己的分割槽號,去各個 maptask 機器上取相應的結果分割槽資料

6)reducetask 會取到同乙個分割槽的來自不同 maptask 的結果檔案,reducetask 會將這些

檔案再進行合併(歸併排序)

7)合併成大檔案後,shuffle 的過程也就結束了,後面進入 reducetask 的邏輯運算過程

(從檔案中取出乙個乙個的鍵值對 group,呼叫使用者自定義的 reduce()方法)

3)注意

shuffle 中的緩衝區大小會影響到 mapreduce 程式的執行效率,原則上說,緩衝區越大,

磁碟 io 的次數越少,執行速度就越快。

環形緩衝區的大小可以通過引數調整,引數:io.sort.mb 預設 100m。

本部落格僅為博主學習總結,感謝各大網路平台的資料。蟹蟹!!

十二 MapReduce詳細工作流程

2 maptask並行度決定機制 3 maptask工作機制 2 注意 3 reducetask工作機制 map階段假如入有2個分割槽 呼叫partitioner 同一分區內所有資料按照key有序 呼叫compareto排序 reduce階段reducetask數量也設定為2,每個reducetas...

詳細的NTLM工作流程

ntlm工作流程是這樣的 1 客戶端首先在本地加密當前使用者的密碼成為密碼雜湊 2 客戶端向伺服器傳送自己的帳號,這個帳號是沒有經過加密的,明文直接傳輸 3 伺服器產生乙個16位的隨機數字傳送給客戶端,作為乙個 challenge 挑戰 4 客戶端再用加密後的密碼雜湊來加密這個 challenge ...

簡述Spring的詳細工作原理

另spring與spring mvc的區別 spring mvc就是乙個mvc框架,個人覺得spring mvc annotation式的開發比struts2方便,可以直接代替上面的struts 當然struts的做為乙個非常成熟的mvc,功能上感覺還是比spring強一點,不過spring mvc...