天天看點

Hadoop初學指南(6)--MapReduce的簡單執行個體及分析

本文在上一節的基礎上通過一個簡單的MR示例對MapReduce的運作流程進行分析。

假設有兩行資料,分别是hello you,hello me,我們要統計其中出現的單詞以及每個單詞出現的次數。

所得的結果為

hello   2

you     1

me      1

(1)大緻運作流暢

1.解析成2個<k,v>,分别是<0, hello you><10, hello me>。調用2次map函數。

2.執行map任務

3.map輸出後的資料是:<hello,1>,<you,1>,<hello,1>,<me,1>

4.排序後是:<hello,1>,<hello,1>,<me,1>,<you,1>

5.分組後是:<hello,{1,1}>,<me,{1}>,<you,{1}>

6.執行reduce任務,reduce函數被調用的次數是3

7.輸出

(2)相關代碼

所有的項目依舊為以前所用的myhadoop項目

①在src下建立org.apache.hadoop.fs包,把FileUtil這個類檔案拷貝到這個包,FileUtil在附件中給出,隻需建立一個FileUtil類,将内容拷貝至其中。(這一步主要是為了給權限的)

②在myhadoop項目下建立一個mapreduce包,在這個包下建立一個名為WordCountApp的java類。

1.重寫map類,代碼如下:

其中Mapper泛型中的四個類型分别表示KEYIN,VALUEIN,KEYOUT,VALUEOUT。

KEYIN即k1,表示行的偏移量

VALUEIN即v1,表示行文本内容

KEYOUT即k2,表示行中出現的單詞

VALUEOUT即v2,表示行中出現的單詞的次數,這裡為固定值1。

2.重寫Reducer類,代碼如下:

其中Reducer泛型中的四個類型也表示KEYIN,VALUEIN,KEYOUT,VALUEOUT。

KEYIN即k2,表示行中出現的單詞

VALUEIN即v2,表示行中出現的單詞的次數

KEYOUT即k3,表示文本中出現的不同單詞

VALUEOUT即v3,表示文本中出現的不同單詞的總次數1。

3.寫main方法,代碼如下:

相關代碼的所有内容,已經在附件中。

(3)運作檢視結果

編寫完代碼後運作即可:

運作完成後,可以去HDFS中進行檢視:

可以看到HDFS中有了/out檔案夾,檔案夾中多了兩個檔案。

檢視其中的part-r-00000檔案,内容如下:

這就是我們想要得到的内容。

本文出自 “” 部落格,轉載請與作者聯系!

繼續閱讀