天天看點

mapreduce shuffle過程

1.map端先将資料源檔案切分成若幹個切片,一般按照hdfs切塊方式128m,最後一個允許1.1倍大小

2.每個切片開啟一個maptask,調用run方法,将資料讀取到shuffle

3.collecter收集器收集到maptask的資料寫入環形緩沖區中,在環形緩沖區中根據計算出的分區編号排序,

相同分區編号的資料的中繼資料放在一起但是環形緩沖區一般預設大小100m,有溢寫閥值預設80m,

4.達到閥值時會觸發溢寫,以byte數組方式将資料寫入磁盤檔案中,同時按照key排序,

并在溢寫過程中調用combiner合并資料,然後再歸并排序合并成,并調用combiner合并資料

5.此時按照排序的規則将資料整理有序了,fetch抓取預設5個線程将資料拆分,

按照分區歸并成一個個檔案,

6.将相同mapkey的資料分組傳入reducer

7.mapreduceapplicationmanager一直在跟蹤maptask和reducetask的狀态和進度,

一旦有一個maptask完成就啟動reducetask

8.reducer調用run方法做對資料的最後處理并通過收集器寫入緩沖區重新整理到檔案中

繼續閱讀