本期內(nèi)容:
10年積累的網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)經(jīng)驗(yàn),可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識(shí)你,你也不認(rèn)識(shí)我。但先網(wǎng)站制作后付款的網(wǎng)站建設(shè)流程,更有墨竹工卡免費(fèi)網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。
1 MapReduce架構(gòu)解密
2 MapReduce運(yùn)行集群研究
3 通過Java編程操作MapReduce實(shí)戰(zhàn)
Hadoop從2。0開始就已經(jīng)必須運(yùn)行在 Yarn上面了,1.0時(shí)根本不關(guān)心Yarn。
現(xiàn)在是 MR,也是講Yarn的,而且已經(jīng)是 基礎(chǔ)入門階段。零基礎(chǔ)已經(jīng)過去了。
明天開始 - 20個(gè)左右的MapReduce代碼的集合講解
一:基于Yarn的MapReduce架構(gòu)
1.MR代碼程序是基于實(shí)現(xiàn)Mapper和Reducer兩大階段構(gòu)成的,其中Mapper是把一個(gè)計(jì)算任務(wù)分解成很多
小任務(wù)進(jìn)行并行計(jì)算,Reducer是進(jìn)行最后的統(tǒng)計(jì)的工作的;
2.Hadoop 2.x開始是基于Yarn運(yùn)行的。
Yarn是管理集群的所有資源的(如內(nèi)存和CPU),ResourceManager,每個(gè)節(jié)點(diǎn)上安排了一上JVM進(jìn)程,NodeManager,接收要求用Container方式來包裹這些資源,當(dāng)RM接收到作業(yè)請求時(shí),
3.當(dāng)ResourceManager接收到Client提交的請求的程序的時(shí)候會(huì)根據(jù)集群資源的狀況在某個(gè)NodeManager所在的節(jié)點(diǎn)上命令NodeManager啟動(dòng)該程序的第一個(gè)Container,該Container就是程序的ApplicationMaster,負(fù)責(zé)程序的任務(wù)調(diào)度的執(zhí)行過程,ApplicationManager轉(zhuǎn)過來向ResourceManager注冊自己,注冊之后會(huì)向ReourceManager申請具體的Container計(jì)算資源。
4.如何街道一個(gè)程序中的ApplicationMaster需要多少個(gè)Container呢?
Application在啟動(dòng)時(shí)會(huì)運(yùn)行程序的Main方法,該方法中會(huì)有數(shù)據(jù)的輸入和相關(guān)的配置,通過這些內(nèi)容就可以知道需要多少Container;
(container是一個(gè)單位的計(jì)算機(jī)資源,根據(jù)客戶端請求的計(jì)算,集群會(huì)解析計(jì)算job,計(jì)算結(jié)果包含需要的contain資源)
Application要運(yùn)行Main方法,知道分析程序有多少個(gè)分片,多少個(gè)分片對應(yīng)Container,再考量其他資源,如Shuffle等再分配一些資源。
5.MapReduce運(yùn)行在Yarn上的總結(jié)
主從結(jié)構(gòu)
主節(jié)點(diǎn),只有一個(gè): ResourceManager
控制節(jié)點(diǎn),每個(gè)Job都有一個(gè)MRAppMaster
從節(jié)點(diǎn),有很多個(gè): YarnChild
ResourceManager負(fù)責(zé):
接收客戶提交的計(jì)算任務(wù)
把Job分給MRAppMaster執(zhí)行
監(jiān)控MRAppMaster的執(zhí)行情況
MRAppMaster負(fù)責(zé):
負(fù)責(zé)一個(gè)Job執(zhí)行的任務(wù)調(diào)度
把Job分給YarnChild執(zhí)行
監(jiān)控YarnChild的執(zhí)行情況
YarnChild負(fù)責(zé):
執(zhí)行MRAppMaster分配的計(jì)算任務(wù)
RM生產(chǎn)環(huán)境中是要做HA的
6.Hadoop MapReduce中的 MRAppMaster,相當(dāng)于Spark中的Driver,Hadoop MapReduce中的YarnChildren相當(dāng)于Spark中的CoarseGrainedExecutorBackend;
(Hadoop相對于Spark資源的損耗相當(dāng)多)