標籤:大資料 hadoop
本期內容:
1 MapReduce架構解密
2 MapReduce運行叢集研究
3 通過Java編程操作MapReduce實戰
Hadoop從2。0開始就已經必須運行在 Yarn上面了,1.0時根本不關心Yarn。
現在是 MR,也是講Yarn的,而且已經是 基礎入門階段。零基礎已經過去了。
明天開始 - 20個左右的MapReduce代碼的集合講解
一:基於Yarn的MapReduce架構
1.MR代碼程式是基於實現Mapper和Reducer兩大階段構成的,其中Mapper是把一個計算任務分解成很多
小任務進行並行計算,Reducer是進行最後的統計的工作的;
2.Hadoop 2.x開始是基於Yarn啟動並執行。
Yarn是管理叢集的所有資源的(如記憶體和CPU),ResourceManager,每個節點上安排了一上JVM進程,NodeManager,接收要求用Container方式來包裹這些資源,當RM接收到作業請求時,
3.當ResourceManager接收到Client提交的請求的程式的時候會根據叢集資源的狀況在某個NodeManager所在的節點上命令NodeManager啟動該程式的第一個Container,該Container就是程式的ApplicationMaster,負責程式的任務調度的執行過程,ApplicationManager轉過來向ResourceManager註冊自己,註冊之後會向ReourceManager申請具體的Container計算資源。
4.如何街道一個程式中的ApplicationMaster需要多少個Container呢?
Application在啟動時會運行程式的Main方法,該方法中會有資料的輸入和相關的配置,通過這些內容就可以知道需要多少Container;
(container是一個單位的電腦資源,根據用戶端請求的計算,叢集會解析計算job,計算結果包含需要的contain資源)
Application要運行Main方法,知道剖析器有多少個分區,多少個分區對應Container,再考量其他資源,如Shuffle等再分配一些資源。
5.MapReduce運行在Yarn上的總結
主從結構
主節點,只有一個: ResourceManager
控制節點,每個Job都有一個MRAppMaster
從節點,有很多個: YarnChild
ResourceManager負責:
接收客戶提交的計算任務
把Job分給MRAppMaster執行
監控MRAppMaster的執行情況
MRAppMaster負責:
負責一個Job執行的任務調度
把Job分給YarnChild執行
監控YarnChild的執行情況
YarnChild負責:
執行MRAppMaster分配的計算任務
RM生產環境中是要做HA的
6.Hadoop MapReduce中的 MRAppMaster,相當於Spark中的Driver,Hadoop MapReduce中的YarnChildren相當於Spark中的CoarseGrainedExecutorBackend;
(Hadoop相對於Spark資源的損耗相當多)
本文出自 “在雲端” 部落格,請務必保留此出處http://ymzhang.blog.51cto.com/3126300/1741453
大資料IMF-L38-MapReduce內幕解密聽課筆記及總結