yarn知識體系總結(jié)
創(chuàng)新互聯(lián)建站自2013年創(chuàng)立以來,先為隴西等服務(wù)建站,隴西等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為隴西企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。Yarn 產(chǎn)生的原因
(1)MapreduceV1 中,jobtracker 存在瓶頸:
集群上運行的所有mr 程序都有jobtracker 來調(diào)度
SPOF 單點故障
職責劃分不清晰
(2) 將jobtracker 的職責劃分成兩個部分:
? 資源調(diào)度與管理:由統(tǒng)一的資源調(diào)度平臺(集群)來實現(xiàn)(yarn)
? 任務(wù)監(jiān)控與管理:
A、每一個application 運行時擁有一個自己的任務(wù)監(jiān)控管理進程AppMaster
B、AppMaster 的生命周期:application 提交給yarn 集群之后,yarn 負責啟動該application 的AppMaster,隨后任務(wù)的執(zhí)行監(jiān)控調(diào)度等工作都交由AppMaster,待這個application 運行完畢后,AppMaster 向yarn 注銷自己。
C、AppMaster 的具體實現(xiàn)由application 所使用的分布式運算框架自己負責,比如Mapreduce 類型的application 有MrAppMaster 實現(xiàn)類。Spark DAG 應(yīng)用則有SparkOnYarn 的SparkContext 實現(xiàn)
yarn的架構(gòu)圖
yarn的2個主要的類節(jié)點(服務(wù)進程)
1、resourcemanager 主節(jié)點master --- 只需要1個 (也可以實現(xiàn)HA)
2、nodemanager 從節(jié)點 -----根據(jù)集群規(guī)模可以有多個
具體小結(jié)如下:
(1)ResourceManager ----> master node,可配多個RM 實現(xiàn)HA 機制,
ResourceManager由兩個核心組件構(gòu)成:
Scheduler 和ApplicationsManager;
Scheduler:負責資源調(diào)度,調(diào)度策略可插拔(內(nèi)置實現(xiàn)CapacityScheduler / FairScheduler )不提供對application 運行的監(jiān)控;
ApplicationsManager:負責響應(yīng)任務(wù)提交請求,協(xié)商applicationMaster 運行的container,重啟失敗的applicationMaster
(2)NodeManager ----> slave nodes,每臺機器上一個
職責:加載containers,監(jiān)控各container 的資源使用情況,并向Resourcemanager/Scheduler 匯報
(3)ApplicationMaster ----> 特定運算框架自己實現(xiàn),接口為統(tǒng)一的AppMaster
職責:向Scheduler 請求適當?shù)馁Y源,跟蹤任務(wù)的執(zhí)行,監(jiān)控任務(wù)執(zhí)行進度、狀態(tài)等
yarn的基本概念-mr程序提交的流程
yarn:hadoop的資源管理調(diào)度平臺(集群)---為用戶程序提供運算資源的管理和調(diào)度
用戶程序:如用戶開發(fā)的mr程序
1、runjar啟動起來之后,就會找resourcemanager,發(fā)出一個遠程過程調(diào)用RPC //申請?zhí)峤灰粋€job(mr程序)
2、resourcemanager會返回一個jobid以及一個提交job相關(guān)文件的hdfs路徑給runjar程序 比如:hdfs://../stagingDIR
3、runjar就會上傳job相關(guān)的文件到hdfs路徑下 比如:hdfs://.../stagingDIR/jobid/worcount.jar
jbo.xml
job split的切片信息
4、通知RM,文件上傳成功
5、在RM內(nèi)部會對本次客戶端提交的任務(wù),構(gòu)造出一個任務(wù)出來,放在他的內(nèi)部的任務(wù)隊列中。別的客戶端提交上來的任務(wù)也會在這個隊列中,當資源不夠的時候,會等待。
6、nodemanager和resourcemanager之間時刻都保持著一個心跳的通信,任務(wù)出來之后,nodemanager會去自動去領(lǐng)取任務(wù),比如:nodemanager在領(lǐng)取任務(wù)的時候被其中一個節(jié)點領(lǐng)取到了任務(wù),nodemanager會到hdfs上拉取job的相關(guān)的文件。
7、nodemanager在自己的內(nèi)部隔離出一部分資源出來,形成一個容器(container)cpu+mem 這個任務(wù)要做的第一件事情是:他會在容器里面去啟動一個程序,(那他怎么知道去啟動這個程序的呢?resource manager會在這個job任務(wù)中描述的會嵌入一個啟動程序的shell命令)nodemanager負責把這個shell命令在他的機器上執(zhí)行一下就ok了,執(zhí)行以下就會在容器中啟動一個MapReduce jar包中的一個程序,這個程序就叫做(MRappmaster進程)接下來所有的處理流程就由這個MRappmaster進程來主導了。
MRAPPmaster會做什么事?他本身又是個什么東西呢?
MRappmaster:其實就是一個MapReduce的應(yīng)用程序的主管。這個主管進程是MapReduce框架來實現(xiàn)的,這個就是用來管理這個MapReduce程序的執(zhí)行
在yarn中其實就只負責到把mrappmaster進程啟動起來。其他的MapReduce程序具體是怎么運行的,yarn就不管了。yarn只負責給你相應(yīng)需要的資源就Ok了
8、mrappmaster啟動起來之后,會向resourcemanager注冊并申請程序運行的資源。mrappmaster會啟動map task和reduce task進程,所以需要資源包括監(jiān)控和管理任務(wù)所需要的資源。
9、resourcemanager就會把mrappmaster申請的響應(yīng)的資源分配給他,那么在任務(wù)隊列中就又會產(chǎn)生新的任務(wù),這些任務(wù)是交給nodemanager去處理的(其實就是分配資源的任務(wù))nodemanager領(lǐng)取到新的分配資源的任務(wù)的時候就會在自己的這臺機器上創(chuàng)建新的容器(一臺機器上可以創(chuàng)建多個容器)每臺nodemanager創(chuàng)建好的容器資源列表會返回給RM
10、RM就會返回資源列表信息給MRappmaster
11、mrappmaster就會去找到每臺nodemanager中領(lǐng)到任務(wù)并創(chuàng)建容器的機器,讓他們?nèi)觤ap task進程。(要啟動幾個map task進程是看job任務(wù)中關(guān)于job split切片規(guī)則的,規(guī)則中是幾個就起幾個map task進程)
12、當map task處理完成任務(wù)后會返回信息給mrappmaster 告訴他我把處理好的 任務(wù)結(jié)果放在了哪里哪里....
13、mrappmaster會再次向RM申請新的資源,RM會為這次的申請再次分配一個任務(wù)到任務(wù)隊列中,那么其中的一個nodemanager會去領(lǐng)取任務(wù),并且分配容器,然后會返回給RM,告訴他我創(chuàng)建好了容器,然后RM會告訴給MRappamster告訴他,你需要的資源,我給你創(chuàng)建好了,并且告訴他在那臺nodemanager上。
14、mrappmaster會在響應(yīng)的nodemanager容器中啟動一個reduce task 進程,并且告訴他map 輸出的結(jié)果在哪里 哪里...
reduce task就會去拿,在執(zhí)行他的內(nèi)部的執(zhí)行過程
16、reduce task就會給mrappmaster返回處理結(jié)果,
17、整個MR程序處理完成,mrappmaster向RM注銷自己。
小結(jié):
YARN的工作機制--MR程序運行流程
查看map task和reduce task的進程用命令jps看到的是yarn child
總結(jié):
1.yarn只響應(yīng)job的提交及為job的運行分配資源
yarn不參與job的具體運行機制和流程
2.mapreduce程序中有一個MrAppmaster來負責程序的 具體運行流程控制
3.由于yarn不提供用戶程序的具體運行,所以yarn可以為各種類型的資源程序提供資源服務(wù)
(YARN就類似于一個操作系統(tǒng)平臺,可以運行各種各樣運算框架所開發(fā)的程序:mapreduce storm spark...)
4.因為yarn的這種運行機制,延長了hadoop的生命周期
5.因為yarn可以整合各種各樣的運算框架,企業(yè)就可以把各種分布式框架整合到hadoop集群
以便于企業(yè)管理和節(jié)約了企業(yè)的成本
application 生命周期
Yarn 支持短周期和長周期應(yīng)用
MR:短周期應(yīng)用,用戶的每一個job 為一個application
Spark:短周期應(yīng)用,但比上一種效率要高,它是將一個工作流(DAG)轉(zhuǎn)化為一個application,這樣在job 之間可以重用container 及中間結(jié)果數(shù)據(jù)可以不用落地
Storm:long-running 應(yīng)用,應(yīng)用為多用戶共享,降低了資源調(diào)度的前期消耗,從而可以為用戶提供低時延響應(yīng)
資源請求
資源請求由Container 對象描述,支持數(shù)據(jù)本地性約束,如處理hdfs 上的數(shù)據(jù),則container 優(yōu)先分配在block 所在的datanode,如該datanode 資源不滿足要求,則優(yōu)選同機架,還不能滿足則隨機分配
Application 可以在其生命周期的任何階段請求資源,可以在一開始就請求所需的所有資源,也可以在運行過程中動態(tài)請求資源;如spark,采用第一種策略;而MR 則分兩個階段,map task 的資源是在一開始一次性請求,而reduce task 的資源則是在運行過程中動態(tài)請求;并且,任務(wù)失敗后,還可以重新請求資源進行重試
yarn任務(wù)調(diào)度--capacity scheduler(容量調(diào)度) / fair scheduler(公平調(diào)度) //此部分見單獨文檔
由于集群資源有限,當無法滿足眾多application 的資源請求時,yarn 需要適當?shù)牟呗詫pplication 的資源請求進行調(diào)度;
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。