Shuffle機制

題記

本文資料來源于拉鉤大數據開發(fā)高薪訓練營。

shuffle機制在MapReduce整個過程中非常重要,試想如果沒有shuffle機制,以wordCount為例,相同的key就沒法落在同一個數據分區(qū)中,自然不能被同一個ReduceTask處理。

shuffle核心機制: 數據分區(qū),排序,分組,combine,合并等。


shuffle
  1. 從map完成開始,shuffle階段正式開始。首先map階段的數據都會先進入一個緩沖區(qū),緩沖區(qū)的默認大小是100M,當緩沖區(qū)的數據達到80%,就會將這80%的數據溢寫到磁盤中作為一個分區(qū)文件,剩下的20%空間繼續(xù)做緩存的工作。
  2. 溢寫到磁盤中的數據分區(qū)會進行一個Sort,Sort是hadoop默認的機制,這里不深入討論。
  3. 排好序的分區(qū)會合并、然后再進行總體歸并排序,由多個分區(qū)文件變?yōu)橐粋€文件的過程,其目的是減少網絡IO的傳輸。
  4. 然后再Reduce之前,MapTask會將數據輸出到Reduce的節(jié)點上。這其中是由ReduceTask向MapTask發(fā)起HTTP請求,ReduceTask會請求屬于自己的數據,這其中是Partitioner起了作用,Partitioner會篩選key到分區(qū),以此將MapTask的滿足同一個篩選條件的數據拉取到ReduceTask的節(jié)點上,進行Reduce工作。
  5. ReduceTask接收到數據后,也是會先放到內存緩存中,當內存緩存不夠也是將數據溢出到磁盤中,接下來類似地將數據進行歸并排序,最后按照相同的key進行分組。如果只有一種key,那就是分一個組,如果有多個key,則是在一個文件中,相同的key的數據分開放。
  6. 分組后,shuffle階段就結束了,接下來就是執(zhí)行Reduce方法了。
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容