mapreduce工作流程

https://wenku.baidu.com/view/929678ccf90f76c661371a87.html

一、MapReduce架構組成

(主從架構)主要包含4個主要的組件:

》Client:將編寫的MapReduce程序提交給JobTracker端。在Hadoop內部用“作業”(Job)表示MapReduce程序,每個作業會被分解成若干個Map/Reduce任務(Task)。

》JobTracker:主要負責資源監控和作業調度。監控所有TaskTracker與作業的健康狀況。

》TaskTracker:TaskTracker會周期性地通過Heartbeat將本節點上資源的使用情況和任務的運行進度匯報給JobTracker,同時接收JobTracker發送過來的命令并執行相應的操作(如啟動新任務、殺死任務等)。TaskTracker使用“slot”等量劃分本節點上的資源量。“slot”代表計算資源(CPU、內存等)。一個Task獲取到一個slot后才有機會運行,而Hadoop調度器的作用就是將各個TaskTracker上的空閑slot分配給Task使用。slot分為Map slot和Reduce slot兩種,分別供Map Task和Reduce Task使用。TaskTracker通過slot數目(可配置參數)限定Task的并發度。

》Task:(任務)Task分為Map Task和Reduce Task兩種,均由TaskTracker啟動。

map task執行流程:


reduce task執行流程:


二、mapreduce的生命周期:(即作業提交到運行結束的整個流程)


一共有5個步驟:

1、作業提交與初始化。JobClient。

2、任務調度與監控。JobTracker。

3、任務運行環境準備。即TaskTracker啟動JVM和資源隔離。

4、任務執行。TaskTracker為Task準備好運行環境后,便會啟動Task.

5、作業完成。所有Task執行完畢后,整個作業執行成功.

三、mapreduce編程接口體系結構:

mapreduce編程模型接口體系的結構如下圖:

整個編程模型位于用戶應用程序層和MapReduce執行層之間。分為兩層:

第一層是最基本的Java API,主要有5個編程組件:分別是InputFormat、Mapper、Partitioner、Reducer和OutputFormat。Hadoop自帶了很多直接可用的InputFormat、Partitioner和OutputFormat,大部分情況下,用戶只需編寫Mapper和Reducer即可。

第二層是工具層,位于基本Java API之上,主要是為了方便用戶編寫復雜的MapReduce程序和利用其他編程語言增加MapReduce計算平臺的兼容性而提出來的。在該層中,主要提供了4個編程工具包。 ? ? ? ? ? ? ??

?JobControl:方便用戶編寫有依賴關系的作業,這些作業往往構成一個有向圖,所以通常稱為DAG(Directed Acyclic Graph)作業,如第2章中的樸素貝葉斯分類算法實現便是4個有依賴關系的作業構成的DAG。

?ChainMapper/ChainReducer:方便用戶編寫鏈式作業,即在Map或者Reduce階段存在多個Mapper,形式如下:[MAPPER+ REDUCER MAPPER*]

?Hadoop Streaming:方便用戶采用非Java語言編寫作業,允許用戶指定可執行文件或者腳本作為Mapper/Reducer。

?Hadoop Pipes:專門為C/C++程序員編寫MapReduce程序提供的工具包。

四、接口介紹:

1、InputFormat接口:

主要用于描述輸入數據的格式。提供以下兩個功能:

?數據切分:按照某個策略將輸入數據切分成若干個split,以便確定Map Task個數以及對應的split。

?為Mapper提供輸入數據:給定某個split,能將其解析成一個個key/value對。

2、OutputFormat接口:

主要用于描述輸出數據的格式,它能夠將用戶提供的key/value對寫入特定格式的文件中。

3、Partitioner接口:

對Mapper產生的中間結果進行分片,以便將同一分組的數據交給同一個Reducer處理,它直接影響Reduce階段的負載均衡。

4、Mapper Reducer:

封裝了應用程序的數據處理邏輯。所有存儲在底層分布式文件系統上的數據均要解釋成key/value的形式,并交給Mapper/Reducer中的map/reduce函數處理,產生另外一些key/value。

五、非Java API的設計:

1、Hadoop Streaming:

為方便非Java用戶編寫MapReduce程序而設計的工具包。它允許用戶將任何可執行文件或者腳本作為Mapper/Reducer。

Hadoop Streaming要求用戶編寫的Mapper/Reducer從標準輸入中讀取數據,并將結果寫到標準數據中,這類似于Linux中的管道機制。

》實現原理:

Hadoop Streaming工具包實際上是一個使用Java編寫的MapReduce作業。當用戶使用可執行文件或者腳本文件充當Mapper或者Reducer時,Java端的Mapper或者Reducer充當了wrapper角色,它們將輸入文件中的key和value直接傳遞給可執行文件或者腳本文件進行處理,并將處理結果寫入HDFS。

六、Task運行過程分析:

當我們需要編寫一個簡單的mapreduce作業時,只需要實現map和reduce兩個函數即可,然后將作業提交到集群上,Hadoop內部會將這兩個函數封裝到Map Task和Reduce Task中。為幫助更好的理解兩個Task的實現原理,以下將從內部的實現原理來深入分析。Map Task:read 、map 、collect 、spill 、Combine;Reduce Task:shuffle、merge、sort、reduce、write。

Map Task的執行流程:

通過用戶提供的InputFormat將對應的InputSplit解析成一系列的K/V,并以此交給map函數進行處理;

然后按照指定的partition對數據進行分片,確定相應的K/V交給哪個Reduce Task處理;

將數據交給用戶定義的combine進行本地規約,最后講處理結果保存在本地磁盤上。

Reduce Task的執行流程:

其輸入來自各個Map Task。首先通過HTTP請求從各個Map Task上拷貝對應的數據分片,拷貝完后以key為關鍵字對所有數據進行排序,通過排序,key相同的記錄聚集到一起形成若干分組,然后將每組數據交割reduce處理,最后將結果直接寫入HDFS中。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,002評論 6 542
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,400評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,136評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,714評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,452評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,818評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,812評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,997評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,552評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,292評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,510評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,035評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,721評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,121評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,429評論 1 294
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,235評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,480評論 2 379

推薦閱讀更多精彩內容