在map階段會將讀取進來的資料進行邏輯切片進行處理。
此切片與hdfs的切塊不同,hdfs的切塊是將檔案按照block塊的形式儲存起來,mr則是將檔案按照切片數進行計算
預設切片大小等於塊大小,也就是128m切一片,切片數與maptask的數量是一致的,maptask的並行度是由客戶端提交job時的切片數決定的
read階段:maptask根據使用者編寫的reader從中解析出乙個key/vaule
map階段:將讀取到的key/value交給使用者編寫的 map函式進行處理,然後產生新的key/value
clooect收集階段:當資料通過map函式處理過後會呼叫context.write此函式會將生成的key/value進行分割槽(呼叫partition),
***(partiton可以自定義分割槽,也可以使用預設的分割槽器hashpartition,預設的分割槽器會按照我們設定的reducetask的數量進行分割槽
也就是如果只設定了乙個reducetask就只會有乙個分割槽,如果分割槽數不是1而reducetask是1的話,不會執行分割槽
因為maptask執行分割槽依據是先判斷reducetask的數量)***
並且寫入乙個環形緩衝區當中。
spill階段:即溢寫階段,當環形緩衝區達到80%後會對資料進行溢寫,此時會對產生的小檔案內部進行一次快排保證每個小檔案的內部是有序的,
並在必要時對資料進行合併等操作。
combine階段:當所有的資料全都溢寫到磁碟後會按照分割槽對每個分區內的所有小檔案進行一次歸併排序來形成乙個大檔案
從map端開始對解析後的key/value進行分割槽到reduce端對分割槽檔案進行合併(歸併排序)的過程叫做 shuffle。
shuffle的過程總共經過三次排序:
第一次排序是在map端的環形緩衝區向磁碟刷寫內容時,對小檔案內的內容進行排序。
第二次排序是在map端對環形緩衝區刷寫出來的所有小檔案進行合併,為歸併排序。
第三次排序是在reduce段按照分割槽對分區內檔案進行合併,為歸併排序。
FileInputFormat切片機制和配置引數
1 簡單地按照檔案的內容長度進行切片 2 切片大小,預設等於block大小 本地模式塊大小32m,yarn模式128m,老的版本64m 3 切片時不考慮資料集整體,而是逐個針對每乙個檔案單獨切片 比如待處理資料有兩個檔案 file1.txt 330m file2.txt 10m 經過fileinpu...
MapReduce作業執行機制
總結自hadoop權威指南一書 job例項呼叫submit 方法後。submit 內部會呼叫waitforcompletion 4.1 streaming作業的執行5.1 進度 5.2 狀態小作業即作業是小於10個map且只有乙個reduce且輸入大小小於乙個hdfs塊的作業,啟動小作業必須明確確認...
20 mapreduce推測執行機制
1 推測執行機制實際上是hadoop提供的一種針對慢任務的優化方法 當出現慢任務的時候,hadoop會將這個慢任務複製乙份放到其他節點上,兩個節點同時執行相同的任務,誰先執行完,那麼結果就作為最後的結果,另乙個沒有執行完的任務就會被kill掉 2 慢任務出現的場景 任務分配不均勻 機器效能不均等 資...