[學習筆記] 結果分析:shuffle的英文是洗牌,混洗的意思,洗牌就是越亂越好的意思。當在集群的情況下是這樣的,假如有三個map節點和三個reduce節點,一號reduce節點的數據會來自於三個map節點,而不是就來自於一號map節點。所以說它們的數據會混合,路線會交叉, 3叉3。想象一下,像不像 ...
[學習筆記]
結果分析:
shuffle的英文是洗牌,混洗的意思,洗牌就是越亂越好的意思。當在集群的情況下是這樣的,假如有三個map節點和三個reduce節點,一號reduce節點的數據會來自於三個map節點,而不是就來自於一號map節點。所以說它們的數據會混合,路線會交叉, 3叉3。想象一下,像不像洗牌? 馬克-to-win @ 馬克java社區:shuffle在MapReduce中是指map輸出後到reduce接收前,按下麵的官方shuffle圖:具體可以分為map端和reduce端兩個部分。在最開始,假設我們就提交一個大文件,MapReduce會對要處理的大文件數據進行分片(split)操作放到多台機器的集群里,(想象一個搬走大山的大活給一個師的人馬,是不是要把人,部署一圈,展開,一人乾一塊兒,現在是一樣的道理。現在你要擺弄一個1.5T的文件, 需要先把它切開, 分配到不同機器)為每一個分片分配一個MapTask任務,接下來會對每一個分片中的每一行數據進行處理,得到鍵值對(key,value),其中key為偏移量,value為一行的內容。準備給咱們的自己的map方法。執行完咱自己的map方法,便進入shuffle階段。馬克-to-win @ 馬克java社區:為提高效率,mapreduce會把我們的寫出的結果先存儲到map節點的“環形記憶體緩衝區”(不深入探討),當寫入的數據量達到預先設置的闕值後(預設80%)便會啟動溢出(spill)線程將緩衝區中的那部分數據溢出寫(spill)到磁碟的臨時文件中,可能會產生很多,併在寫入前根據key進行排序(sort)和合併(combine,本章不討論)。
文章轉載自原文: https://blog.csdn.net/qq_44594249/article/details/95864731