Hadoop權(quán)威指南-ch2 MapReduce(1)

注:本文涉及書中2.1~2.3小結(jié)

1. MapReduce任務(wù)過程:map和reduce

MapReduce任務(wù)過程分為兩個處理階段:map階段和reduce階段。每個階段都以鍵值對作為輸入和輸出,其類型有程序員來選擇。程序員還需要寫兩個函數(shù):map函數(shù)和reduce函數(shù)。

本書以氣象數(shù)據(jù)的例子講述了MapReduce的工作原理。

2. Java MapReduce

實現(xiàn)MapReduce需要三個部分:map函數(shù)、reduce函數(shù)和一些用來運行作業(yè)的代碼。

1. map函數(shù)Mapper類實現(xiàn),Mapper類聲明一個map()虛方法。Mapper類是一個泛型類型,有4個形參類型,分別指定map函數(shù)的輸入鍵、輸入值、輸出鍵、輸出值的類型。


補充

Mapper類是Hadoop提供的一個抽象類,我們可以繼承這個基類并實現(xiàn)其中的相關(guān)接口函數(shù).

Hadoop1.2.1中對Mapper類的定義如下:

public class Mapper<KEYIN, VALUEIN, KEYIN, VALUEIN>

Mapper類包含4個方法:setup(), map(), cleanup(), run()。其中,map方法是Mapper類的核心成員,主要工作都是在這里完成的,應(yīng)用程序一般都會根據(jù)實際需要override該方法。

protected void map(KEYIN key, VALUEIN value, Context context)

其中key是傳入map的鍵值,value是對應(yīng)鍵值的value值,context是環(huán)境對象變量,供程序訪問Hadoop的環(huán)境參數(shù)

map方法對輸入的鍵值對進行處理,產(chǎn)生一系列的中間鍵值對,轉(zhuǎn)換后的中間鍵值對可以有新的鍵值類型。


看完源碼,感覺需要看看Java了T T

注:Hadoop本身提供了一套可優(yōu)化網(wǎng)絡(luò)序列化傳輸?shù)幕绢愋?,而不直接使用Java內(nèi)嵌的類型,這些類型都在org.aache.hadoop.io包中。

2. 同理,reduce函數(shù)Reducer類實現(xiàn)。Reducer類也有4個形參類型,用于指定輸入鍵、輸入值、輸出鍵、輸出值的類型。reduce函數(shù)的輸入類型必須匹配map函數(shù)的輸出類型。

3. 寫運行MapReduce的作業(yè)代碼。

注:

書中2.3小結(jié)給出了Hadoop在本地文件系統(tǒng)上的分析最高氣溫的實例,下一步準備對其進行復現(xiàn)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容