首頁(yè)技術(shù)文章正文

YARN資源管理框架的體系結(jié)構(gòu)【大數(shù)據(jù)文章】

更新時(shí)間:2020-11-03 來(lái)源:黑馬程序員 瀏覽量:

     YARN(Yet Another Resource Negotiator,另一種資源協(xié)調(diào)者)是一個(gè)通用的資源管理系統(tǒng)和調(diào)度平臺(tái),它的基本設(shè)計(jì)思想是將MRv1(Hadoop1.0中的MapReduce)中的JobTracker拆分為兩個(gè)獨(dú)立的任務(wù),這兩個(gè)任務(wù)分別是全局的資源管理器ResourceManager和每個(gè)應(yīng)用程序特有的ApplicationMaster。其中,ResourceManager負(fù)責(zé)整個(gè)系統(tǒng)的資源管理和分配,而ApplicationMaster負(fù)責(zé)單個(gè)應(yīng)用程序的管理。接下來(lái),我們通過(guò)一張圖來(lái)描述YARN的體系結(jié)構(gòu),具體如圖1所示。

1604385370585_41.jpg

圖1 YARN體系結(jié)構(gòu)

  在圖1中,YARN體系結(jié)構(gòu)的核心組件有三個(gè),具體介紹如下:

  1. ResourceManager

  ResourceManager是一個(gè)全局的資源管理系統(tǒng),它負(fù)責(zé)的是整個(gè)Yarn集群資源的監(jiān)控、分配和管理工作,具體工作如下:

  (1) 負(fù)責(zé)處理客戶端請(qǐng)求

  (2) 接收和監(jiān)控NodeManager(NM)的資源情況

  (3) 啟動(dòng)和監(jiān)控ApplicationMaster(AM)

  (4) 資源的分配和調(diào)度

  值得一提的是,在ResourceManager內(nèi)部包含了兩個(gè)組件,分別是調(diào)度器(Scheduler)和應(yīng)用程序管理器(Application Manager),其中調(diào)度器根據(jù)容量、隊(duì)列等限制條件(如每個(gè)隊(duì)列分配一定的資源,最多執(zhí)行一定數(shù)量的作業(yè)等),將系統(tǒng)中的資源分配給各個(gè)正在運(yùn)行的應(yīng)用程序。該調(diào)度器是一個(gè)“純調(diào)度器”,它不再?gòu)氖氯魏闻c具體應(yīng)用程序相關(guān)的工作;而應(yīng)用程序管理器(Applications Manager)負(fù)責(zé)管理整個(gè)系統(tǒng)中所有的應(yīng)用程序,包括應(yīng)用程序的提交、調(diào)度協(xié)調(diào)資源以啟動(dòng)ApplicationMaster、監(jiān)控ApplicationMaster運(yùn)行狀態(tài)并在失敗時(shí)重新啟動(dòng)。

  2.NodeManager

  NodeManager是每個(gè)節(jié)點(diǎn)上的資源和任務(wù)管理器,一方面,它會(huì)定時(shí)的向ResourceManager匯報(bào)所在節(jié)點(diǎn)的資源使用情況~~,~~;另一方面,它會(huì)接收并處理來(lái)自ApplicationMaster的啟動(dòng)停止容器(Container)的各種請(qǐng)求。

  3.ApplicationMaster

  用戶提交的每個(gè)應(yīng)用程序都包含一個(gè)ApplicationMaster,它負(fù)責(zé)協(xié)調(diào)來(lái)自ResourceManager的資源,把獲得的資源進(jìn)一步分配給內(nèi)部的各個(gè)任務(wù),從而實(shí)現(xiàn)“二次分配”。除此之外,ApplicationMaster還會(huì)通過(guò)NodeManager監(jiān)控容器的執(zhí)行和資源使用情況,并在任務(wù)運(yùn)行失敗時(shí)重新為任務(wù)申請(qǐng)資源以重啟任務(wù)。當(dāng)前的YARN自帶了兩個(gè)ApplicationMaster的實(shí)現(xiàn),一個(gè)是用于演示ApplicationMaster編寫方法的實(shí)例程序DistributedShell,它可以申請(qǐng)一定數(shù)目的Container以并行方式運(yùn)行一個(gè)Shell命令或者Shell腳本;另一個(gè)則是運(yùn)行MapReduce應(yīng)用程序的ApplicationMaster-MRAppMaster。

  需要注意的是,ResourceManager負(fù)責(zé)監(jiān)控ApplicationMaster,并在ApplicationMaster運(yùn)行失敗的時(shí)候重啟它,大大提高集群的拓展性。ResourceManager不負(fù)責(zé)ApplicationMaster內(nèi)部任務(wù)的容錯(cuò),任務(wù)的容錯(cuò)由ApplicationMaster完成,總體來(lái)說(shuō),ApplicationMaster的主要功能是資源的調(diào)度、監(jiān)控與容錯(cuò)。

猜你喜歡:

什么是機(jī)器學(xué)習(xí)?【大數(shù)據(jù)培訓(xùn)】

Spark有哪些特點(diǎn),Spark的生態(tài)系統(tǒng)包含哪些組件?

MapReduce是怎樣進(jìn)行計(jì)算的?

分享到:
在線咨詢 我要報(bào)名
和我們?cè)诰€交談!