您好,登錄后才能下訂單哦!
小編給大家分享一下Hadoop中的Shuffle是什么,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
Shuffle描述著數據從Map Task輸出到Reduce Task輸入的這段過程。
Map端:
1、每個Map有一個環形內存緩沖區,用于存儲任務的輸出,默認大小100MB(io.sort.mb屬性),一旦達到閥值
0.8(io.sort.spill.percent),一個后臺線程把內容寫到(spill)磁盤的指定目錄(mapred.local.dir)下的新建的一個
溢出文件。
2、在寫入磁盤前,要Partitioner,Sort,如果有Combiner(聚合),Combiner排序后在寫入數據。
3、等最后把記錄寫完,合并全部溢出寫文件為一個分區且排序的文件。
Reduce端:
1、Reduce通過Http方式得到輸出的文件的分區。
2、TaskTracker為分區文件運行Reduce任務。復制階段把Map輸出復制到Reduce的內存或磁盤。一個Map任 務完成,Reduce就開始復制輸出。
3、排序階段合并Map輸出,然后走Reduce階段。
注意:在有些情況下,也有可能沒有任何的Reduce,當前數據處理可以完全并行時,即無需混洗(shuffle),可能
會出現無Reduce任務的情況,在這種情況下,唯一的非本地節點數據傳輸是Map任務將結果寫入HDFS.
以上是“Hadoop中的Shuffle是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。