2016-09-18 83 views
6

我通過明確的指導閱讀和網絡包括一個here洗牌和排序的MapReduce

我的問題上其他一些環節是

其中究竟洗牌和排序發生呢?

根據我的理解,它們都發生在mappers和reducer上。但是一些鏈接提到,映射器上發生的混洗以及對減速器的排序。

有人可以確認我的理解是否正確;如果不是,他們可以提供額外的文件,我可以通過?

回答

5

洗牌:

的MapReduce使得該輸入到每一個減速器由鍵排序的保證。系統執行排序和transfers map outputs to the reducers as inputs的過程稱爲混洗。

排序:

排序發生在MapReduce的程序的各個階段,所以還可以在地圖中存在和減少階段。

請看看這個圖 enter image description here

在地圖中添加更多的描述上面的圖像和減少階段。

地圖邊:

當map函數開始產生輸出,它不是簡單地寫入磁盤。在將輸出寫入映射到磁盤之前,將首先將它們最終發送到的線程divides the data into partitions corresponding to the reducers。在每個分區中,background thread performs an in-memory sort by key

的減少副作用:

當所有的地圖輸出已被複制,Reduce任務移動到排序階段(這應該適當地稱爲合併階段,作爲分選在地圖上進行側),它合併地圖輸出,保持排序順序。這將在一輪中完成。

來源:Hadoop權威指南。

+0

對,回到我原來的問題,洗牌和排序都發生在mappers和reducer上嗎? – red

+0

是的!在各種情況下,映射器和縮減器都會進行混洗和排序。 – mrsrinivas