轉載地址: https://blog.csdn.net/Peter_Changyb/article/details/82682422
wordcount爲例詳細闡述shuffle的實現過程
1. 對HDFS輸入的文件進行切割爲KV形式
2.在mapper方法中執行,分割單詞爲KV形式。
3.shuffle在Map端的三個操作:partition(多節點的相同K合併),sort(鍵值對哈希碼排序),combine(單節點上相同K合併)
4.shuffle在Reduce端的兩個個操作:拉取partition,merge,sort
- 1. 拉取partition
-
- hadoop決定有多少個reducer的時候會規定有多少個partition,每一個reducer拉取自己要處理的那個分組的全部成員。例如,某臺節點要處理所有以a開頭的鍵值對,它就會將所有mapper中的以a開頭的那一組全部拉取過來。
-
- 2. merge
-
- 在每一個reducer上,將具有相同鍵的鍵值對生成另外一個新的鍵值對,鍵是以前的鍵,鍵值是一個以前鍵值的集合。
-
- 3. sort
-
- 在每一臺reducer節點上,將新生成的鍵值對進行排序,根據 哈希碼值。
.
5. Reduce操作
6. 寫出到HDFS:在每一臺reducer節點上將文件寫入,實際上是寫成一個一個的文件塊,但對外的表現形式是一整個大的結果文件。