1. 程式人生 > >MapReduce的一個通俗解釋

MapReduce的一個通俗解釋

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): 輸出縮減之後的所有結果。