Hadoop-理解yarn

微信公眾號(hào):北風(fēng)中獨(dú)行的蝸牛

YARN 集群也分為Master/Slave架構(gòu),主要由ResourceManager,NodeManager, ApplicationMaster,Container等組成。

  1. ResourceManager 全局資源管理器,負(fù)責(zé)整個(gè)系統(tǒng)的資源管理分配和任務(wù)調(diào)度。ResourceManager包含Scheduler調(diào)度器和應(yīng)用程序管理器Application mananger。調(diào)度器只是負(fù)責(zé)資源的分配,資源分配的單位是container,應(yīng)用程序管理器負(fù)責(zé)管理整個(gè)系統(tǒng)中所有應(yīng)用程序,包括應(yīng)用程序提交、與調(diào)度器協(xié)商資源以啟動(dòng)ApplicationMaster、監(jiān)控ApplicationMaster運(yùn)行狀態(tài)并在失敗時(shí)重新啟動(dòng)它等。

  2. NodeManager是每個(gè)節(jié)點(diǎn)上的資源和任務(wù)管理器,它會(huì)向ResourceManager定時(shí)匯報(bào)本節(jié)點(diǎn)的資源使用情況和各個(gè)Container的運(yùn)行狀態(tài),同時(shí)會(huì)接受處理來(lái)自ApplicationMaster的對(duì)Container的啟動(dòng)/停止請(qǐng)求。NodeManager不會(huì)監(jiān)視具體的任務(wù),他僅監(jiān)視Container的使用情況。

  3. Task是應(yīng)用程序的具體任務(wù)。例如map任務(wù),reduce任務(wù)等

  4. Container是Yarn中的資源的具體分配單位,封裝了CPU和內(nèi)存資源的容器,相當(dāng)于是一個(gè)Task的運(yùn)行環(huán)境的具體抽象。從實(shí)現(xiàn)上看,Container是一個(gè)抽象類,里面定義資源信息。在NodeManager節(jié)點(diǎn)上擁有許多動(dòng)態(tài)創(chuàng)建的Container。NodeManager會(huì)將計(jì)算機(jī)的CPU和內(nèi)存的一定值抽離成虛擬值,然后這些虛擬值根據(jù)配置組成多個(gè)Container,當(dāng)應(yīng)用提出申請(qǐng)的時(shí)候,會(huì)分配相應(yīng)的Container。
    應(yīng)用程序運(yùn)行的Container也分為兩類,一類是運(yùn)行的ApplicationMaster的Container,一類是運(yùn)行Task的Container。前者是由ResourceManager向內(nèi)部的調(diào)度器申請(qǐng)和啟動(dòng),后者是由ApplicationMaster向ResourceManager申請(qǐng),并由ApplicationMaster請(qǐng)求NodeManager啟動(dòng)

  5. ApplicationMaster應(yīng)用內(nèi)程序管理者。它向ResourceManager申請(qǐng)資源,CPU內(nèi)存等,并將資源分配給task。一個(gè)應(yīng)用程序?qū)?yīng)一個(gè)applicationMaster。在用戶提交一個(gè)應(yīng)用程序的時(shí)候,會(huì)啟動(dòng)一個(gè)ApplicationMaster實(shí)例,ApplicationMaster會(huì)啟動(dòng)所需要的的Task,并監(jiān)控task的運(yùn)行狀態(tài),進(jìn)度等。應(yīng)用程序執(zhí)行完之后,ApplicationMaster會(huì)關(guān)閉自己并釋放Container。

MapReduce的處理過(guò)程:


在這里插入圖片描述
  1. 提交MapReduce程序到ResourceManager
  2. ResourceManager分配container,并要求NodeManager啟動(dòng)APPMaster。 AppMaster負(fù)責(zé)此應(yīng)用程序的整個(gè)生命周期。
  3. AppMaster向ResourceManager注冊(cè)(注冊(cè)成功后,可以通過(guò)ResourceManager查看應(yīng)用程序運(yùn)行的狀態(tài))。AppMaster請(qǐng)求各個(gè)應(yīng)用程序所需要的container
  4. AppMaster請(qǐng)求NodeManager使用這些Container運(yùn)行task。
  5. 各個(gè)Task通過(guò)RPC協(xié)議向AppMaster匯報(bào)自己的運(yùn)行狀態(tài)和進(jìn)度,如果task運(yùn)行失敗,AppMaster可以要求重新啟動(dòng)。當(dāng)所有的task完成,AppMaster向ResourceManager注銷自己。

歡迎關(guān)注我的微信公眾號(hào): 北風(fēng)中獨(dú)行的蝸牛
[圖片上傳失敗...(image-4e3b92-1592530565628)]

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容