Shuffle的執行階段流程

1).Collect階段:將MapTask的結果輸出到默認大小為100M的環形緩沖區,保存的是key/value序列化數據,Partition分區信息等。

2).Spill 階段:當內存中的數據量達到一定的閥值的時候,就會將數據寫入本地磁盤,在將數據寫入磁盤之前需要對數據進行一次排序的操作,如果配置了combiner,還會將有相同分區號和key的數據進行排序。

3).Merge 階段:把所有溢出的臨時文件進行一次合并操作,以確保一個MapTask最終只產生一個中間數據文件。

4).Copy階段: ReduceTask啟動Fetcher線程到已經完成MapTask的節點上復制一份屬于自己的數據,這些數據默認會保存在內存的緩沖區中,當內存的緩沖區達到一定的閥值的時候,就會將數據寫到磁盤之上。

5).Merge階段:在ReduceTask遠程復制數據的同時,會在后臺開啟兩個線程(一個是內存到磁盤的合并,一個是磁盤到磁盤的合并)對內存到本地的數據文件進行合并操作。

6).Sort階段:在對數據進行合并的同時,會進行排序操作,由于MapTask 階段已經對數據進行了局部的排序,ReduceTask只需保證Copy的數據的最終整體有效性即可

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容