在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分割槽 然後寫...