MapReduce的一個通俗解釋

其實我們可以從word count這個實例來理解MapReduce。MapReduce大體上分爲六個步驟:input, split, map, shuffle, reduce, output。細節描述如下:

1. 輸入(input):
如給定一個文檔,包含如下四行:
Hello Java
Hello C
Hello Java

Hello C++


2. 拆分(split):將上述文檔中每一行的內容轉換爲key-value對,即:
0 - Hello Java
1 - Hello C
2 – Hello Java

3 - Hello C++


3. 映射(map):將拆分之後的內容轉換成新的key-value對,即:
(Hello , 1)
(Java , 1)
(Hello , 1)
(C , 1)
(Hello , 1)
(Java , 1)
(Hello , 1)

(C++ , 1)


4. 派發(shuffle):將key相同的扔到一起去,即:
(Hello , 1)
(Hello , 1)
(Hello , 1)
(Hello , 1)
(Java , 1)
(Java , 1)
(C , 1)
(C++ , 1)
注意:這一步需要移動數據,原來的數據可能在不同的datanode上,這一步過後,相同key的數據會被移動到同一臺機器上。最終,它會返回一個list包含各種k-value對,即:
{ Hello: 1,1,1,1}
{Java: 1,1}
{C: 1}

{C++: 1}


5. 縮減(reduce):把同一個key的結果加在一起。如:
(Hello , 4)
(Java , 2)
(C , 1)

(C++,1)


6. 輸出(output): 輸出縮減之後的所有結果。


轉自知乎:https://www.zhihu.com/question/23345991/answer/223113502

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章