MAP階段:
執行map前需要將數據進行分片(將輸入數據切分成大小相同的數據塊),沒一塊作爲單個mapworker的輸入被處理,以便於多個map worker同時工作;分片完成後。多個map worker就可以同時工作,每個map worker在讀取各自的數據後,進行計算處理,最終輸出給reduce
Shuffle階段(合併排序和分配reduce):
map worker在輸出數據時需要爲每一條輸出數據指定一個key,這個key值決定了這條數據將會被髮送到哪個reduce worker。key值和reduce worker是多對一(具有相同key值的數據將會被髮送到同一個reduce worker)
在進入到recude階段之前,mapreduce框架會對數據按照key值排序,使得具有相同key的數據彼此相鄰,如果用戶指定了“合併操作”(Combiner),框架會調用combiner,使具有相同key的數據進行聚合
Reduce階段:
相同的key的數據會達到同一個reduce worker,同一個reduce worker會接收多個map reducer的數據,每個reduce worker會對key相同的數據進行reduce操作,最後,一個key的的多條數據經過reduce作用後,將變成一個值