1. 程式人生 > >MapReduce 原理及其工作流程

MapReduce 原理及其工作流程

一   MapReduce優點

(1)為什麼用MapReduce(計算框架?)?

資料分片和移動計算
MapReduce採用計算移動到資料端方式,
此方式極大提高資料的運算效率

(2)為什麼要用將計算移動到資料端?

一般計算資料方式從資料來源獲取資料,將計算結果返還給資料來源,
當計算大量資料時,這種方式存在很大弊端,在獲取資料時,由於
受到頻寬限制,導致傳送效率大大降低而MapReduce就很好的解
決之一瓶頸,原理:當得到計算請求時,只將計資料計算演算法返還
給資料端,資料端根據演算法執行運算過程,這樣就大大提高資料
計算效率

二  MapReduce工作流程及原理
共六個步驟:

如統計詞頻如圖:

第一步 Input 輸入資料來源

第二步 Splitting 分割資料來源, 按照行數分割

第三步Mapping  對映 分發分割後的資料

第四步:shuffing  其進行分組排序  此部分是透明的且不可變動

第五步 Reducing 去重   Reducing得到shuffle結果即是<K2,V2{1,1,1}>只輸出其中一條,圖中Reducing和自定義合併而非系統本身操作結果

第六步  Final result  得到最終結果

註釋:
步驟與步驟之間為序列關係(每一步按順序一次執行)

而步驟內部為並行關係(內部中運行同時進行)

MR工作原理:
原始檔案
 <k1,v1> k1每行文字的偏移量(k1可為Object 或者LongWritable)  v1每行文字的值 

Mapper<Object,>

map()
 <k2, v2>
shuffle 在不同分割槽中,按key進行分組排序把相同的v放在統一集合中
 <k2,{v2,v2',v2''......}>
Reduce
 <k3,v3>去重

三MapReduce On Yarn 執行流程

1.使用者向Yarn中提交應用程式,其中包括Application程式  啟動Application的命令   使用者程式等

2 ResourceManager為該應用程式分配第一個Container, 並與對應的NodeManager通訊,要求它在這個Contai中啟動應用程式的ApplicationMaster

3.ApplicationMaster首先向ResourceMaster註冊,這樣使用者可以直接通過ResourceManager檢視應用程式的執行狀態,然後,他將為各個人物

申請資源,並監控他的執行狀態,一直到執行結束及重複4-7

4. ApplicationMaster採用輪詢的方式通過RPC協議向ResouManager申請和領取資源

5.一旦ApplicationMaster申請到資源後,則與對應的NodeManager通訊,要求其啟動人物

6.NodeManager為人物設定好執行環境(包括環境變數  jar包 二進位制程式等)後,將任務啟動命令寫到一指令碼中,並通過執行該指令碼啟動任務

7.各個任務通過某個PRC協議向Applicationmaster 彙報自己的狀態和進度,提讓Applicationmaster 隨時掌握各個任務的執行狀態,從而咋

在任務失敗時從新啟動任務,在應用程式執行過程中,使用者可以通過RPC向ApplicationMaster查詢應用程式的當前執行狀態

8 應用程式執行完成後, ApplicationMaster向ResourceManager登出,並關閉自己

註釋:

caontainer:硬體中的CPU+記憶體的邏輯儲存空間