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+記憶體的邏輯儲存空間