MapReduce架構簡介
阿新 • • 發佈:2018-05-29
Hadoop MapReduce 前言:
MapReduce是用於數據處理的一種編程模型,簡單但足夠強大,專門為並行處理大數據而設計。
MapReduce的處理過程分為兩個步驟:map和reduce。每個階段的輸入輸出都是key-value的形式,key和value的類型可以自行指定。map階段對切分好的數據進行並行處理,處理結果傳輸給reduce,由reduce函數完成最後的匯總。
到了2.0之後,MapReduce可以理解為是一個jar包或一個程序,這個程序要運行在Yarn上面,上面有兩個進程,ResourceManager和NodeManager,ResourceManager裏面兩個模塊是什麽,Application Manager: 應用程序管理器 和 Scheduler:調度器,NodeManager相當於執行一個容器,這個容器裏面有 CPU+Memory,這個容器運行一個封裝的任務,MapTask(映射任務)或者跑ReduceTask(歸約任務)
下面簡單介紹下MapReduce2架構設計或者稱為MapReduce提交到Yarn的工作流程:
- 1:用戶向YARN中提交應用程序,其中包括ApplicationMaster程序、啟動ApplicationMaster的命令、用戶程序等。
- 2:ResourceManager為該應用程序分配第一個Container,並與對應的Node-Manager通信,要求它在這個Container中啟動應用
程序的ApplicationMaster。 - 3:ApplicationMaster首先向ResourceManager註冊,這樣用戶可以直接通過ResourceManage查看應用程序的運行狀態,然後
- 4:ApplicationMaster采用輪詢的方式通過RPC協議向ResourceManager申請和領取資源。
- 5:一旦ApplicationMaster申請到資源後,便與對應的NodeManager通信,要求它啟動任務。
- 6:NodeManager為任務設置好運行環境(包括環境變量、JAR包、二進制程序等)後,將任務啟動命令寫到一個腳本中,並通
過運行該腳本啟動任務。 - 7:各個任務通過某個RPC協議向ApplicationMaster匯報自己的狀態和進度,以讓ApplicationMaster隨時掌握各個任務的運行
的當前運行狀態。 - 8:應用程序運行完成後,ApplicationMaster向ResourceManager註銷並關閉自己。
MapReduce架構簡介