MapReduce shuffle階段詳解

2022-05-22 02:54:13 字數 925 閱讀 7887

mapreduce中,shuffle過程是mapreduce的核心,它分布在mapreduce的map階段和reduce階段,共可分為6個詳細的階段:

1).collect階段:將maptask的結果輸出到預設大小為100m的mapoutputbuffer內部環形記憶體緩衝區,儲存

的是key/value,partition分割槽

2).spill階段:當記憶體中的資料量達到一定的閥值的時候,就會將資料寫入本地磁碟,在將資料寫入磁碟

之前需要對資料進行一次排序的操作,先是對partition分割槽號進行排序,再對key排序,如果配置了

combiner,還會將有相同分割槽號和key的資料進行排序,如果有壓縮設定,則還會對資料進行壓縮操作。

3).combiner階段:等maptask任務的資料處理完成之後,會對所有map產生的資料結果進行一次合併操作,

以確保乙個maptask最終只產生乙個中間資料檔案。

4).copy階段:當整個mapreduce作業的maptask所完成的任務資料佔到maptask總數的5%時,jobtracker就會

呼叫reducetask啟動,此時reducetask就會預設的啟動5個執行緒到已經完成maptask的節點上覆制乙份屬於自

己的資料,這些資料缺省會儲存在記憶體的緩衝區中,當記憶體的緩衝區達到一定的閥值的時候,就會將資料寫

到磁碟之上。

5).merge階段:在reducetask遠端複製資料的同時,會在後台開啟兩個執行緒對記憶體中和本地中的資料檔案進行

合併操作。

6).sort階段:在對資料進行合併的同時,會進行排序操作,由於maptask階段已經對資料進行了區域性的排序,

reducetask只需做一次歸併排序就可以保證copy的資料的整體有效性。

】,謝謝!

mapreduce shuffle 講的很詳細

mapreduce 是現今乙個非常流行的分布式計算框架,它被設計用於平行計算海量資料。第乙個提出該技術框架的是google 公司,而google 的靈感則來自於函式式程式語言,如lisp,scheme,ml 等。mapreduce 框架的核心步驟主要分兩部分 map 和reduce。當你向mapre...

MapReduce Shuffle原理分析

shuffle的本意是洗牌,把一組有規則的資料打亂成無規則的資料。而在mr中,shuffle更像是洗牌的逆過程,指的是將map端的無規則資料按指定規則打亂 打亂 成具有一定規則的資料,以便reduce端接收處理。在shuffle之前,也就是在map階段,mapreduce會對要處理的資料進行分片 s...

MapReduce之mapTask階段詳解

整個map階段流程大體如上圖所示。簡單概述 inputfile通過split被邏輯切分為多個split檔案,通過record按行讀取內容給 map 使用者自己實現的 進行處理,資料被map處理結束之後交給outputcollector收集 器,對其結果key進行分割槽 預設使用hash分割槽 然後寫...