標籤:大資料 hadoop
上午課程:6:00am
Hadoop MapReduce內幕解密:
MR架構解密
MR運行叢集研究
JAVA操作MR實戰
【隨課筆記】:
一:基於Yarn的MapReduce架構
1.MapReduce代碼程式是基於實現Mapper和Reducer兩大階段構成的,其中Mapper是把一個計算任務分解成很多小任務進行並行計算,Reduce進行最後的統計的工作的;
2.Hadoop 2.x開始是基於Yarn啟動並執行(1.x版本是不關心Yarn的)
Yarn是管理叢集的所有資源的(如記憶體和CPU),ResourceManager,每個節點上安排了一上JVM進程,NodeManager,接收要求用Container方式來包裹這些資源,當RM接收到作業請求時,
650) this.width=650;" src="http://s1.51cto.com/wyfs02/M01/7A/D2/wKioL1a6lC-g0w4xAAC1Z_xFRSY653.png" style="float:none;" title="1.png" alt="wKioL1a6lC-g0w4xAAC1Z_xFRSY653.png" />
3.當ResourceManager接收到Client提交的請求的程式的時候會根據叢集資源的狀況在某個NodeManager所在的節點上命令NodeManager啟動該程式的第一個Container,該Container就是程式的ApplicationMaster,負責程式的任務調度的執行過程,ApplicationManager轉過來向ResourceManager註冊自己,註冊之後會向ReourceManager申請具體的Container計算資源。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/7A/D2/wKioL1a6lDCQu0E_AACRhOZXAaI915.png" title="2.png" style="float:none;" alt="wKioL1a6lDCQu0E_AACRhOZXAaI915.png" />
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分配的計算任務 |
6.Hadoop MapReduce中的 MRAppMaster,相當於Spark中的Driver,Hadoop MapReduce中的YarnChildren相當於Spark中的CoarseGrainedExecutorBackend;
(Hadoop相對於Spark資源的損耗相當多)
本文出自 “在雲端” 部落格,請務必保留此出處http://ymzhang.blog.51cto.com/3126300/1741452
大資料IMF-L38-MapReduce內幕解密聽課筆記及總結