溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Hadoop中Yarn基本架構(gòu)是怎么樣的

發(fā)布時(shí)間:2021-12-09 16:08:49 來源:億速云 閱讀:149 作者:小新 欄目:大數(shù)據(jù)

這篇文章主要為大家展示了“Hadoop中Yarn基本架構(gòu)是怎么樣的”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Hadoop中Yarn基本架構(gòu)是怎么樣的”這篇文章吧。

1.1 YARN 基本架構(gòu)

YARN是Hadoop 2.0中的資源管理系統(tǒng),它的基本設(shè)計(jì)思想是將MRv1中的JobTracker拆分成了兩個(gè)獨(dú)立的服務(wù):一個(gè)全局的資源管理器ResourceManager和每個(gè)應(yīng)用程序特有的ApplicationMaster。

其中ResourceManager負(fù)責(zé)整個(gè)系統(tǒng)的資源管理和分配,而ApplicationMaster負(fù)責(zé)單個(gè)應(yīng)用程序的管理。

1.2 YARN基本組成結(jié)構(gòu)

YARN總體上仍然是Master/Slave結(jié)構(gòu),在整個(gè)資源管理框架中,ResourceManager為Master,NodeManager為Slave,ResourceManager負(fù)責(zé)對(duì)各個(gè)NodeManager上的資源進(jìn)行統(tǒng)一管理和調(diào)度。當(dāng)用戶提交一個(gè)應(yīng)用程序時(shí),需要提供一個(gè)用以跟蹤和管理這個(gè)程序的ApplicationMaster,它負(fù)責(zé)向ResourceManager申請(qǐng)資源,并要求NodeManger啟動(dòng)可以占用一定資源的任務(wù)。由于不同的ApplicationMaster被分布到不同的節(jié)點(diǎn)上,因此它們之間不會(huì)相互影響。在本小節(jié)中,我們將對(duì)YARN的基本組成結(jié)構(gòu)進(jìn)行介紹。

圖2-9描述了YARN的基本組成結(jié)構(gòu),YARN主要由ResourceManager、NodeManager、ApplicationMaster(圖中給出了MapReduce和MPI兩種計(jì)算框架的ApplicationMaster,分別為MR AppMstr和MPI AppMstr)和Container等幾個(gè)組件構(gòu)成。

Hadoop中Yarn基本架構(gòu)是怎么樣的

1.ResourceManager(RM)

RM是一個(gè)全局的資源管理器,負(fù)責(zé)整個(gè)系統(tǒng)的資源管理和分配。它主要由兩個(gè)組件構(gòu)成:調(diào)度器(Scheduler)和應(yīng)用程序管理器(Applications Manager,ASM)。

(1)調(diào)度器

調(diào)度器根據(jù)容量、隊(duì)列等限制條件(如每個(gè)隊(duì)列分配一定的資源,最多執(zhí)行一定數(shù)量的作業(yè)等),將系統(tǒng)中的資源分配給各個(gè)正在運(yùn)行的應(yīng)用程序。

需要注意的是,該調(diào)度器是一個(gè)“純調(diào)度器”,它不再從事任何與具體應(yīng)用程序相關(guān)的工作,比如不負(fù)責(zé)監(jiān)控或者跟蹤應(yīng)用的執(zhí)行狀態(tài)等,也不負(fù)責(zé)重新啟動(dòng)因應(yīng)用執(zhí)行失敗或者硬件故障而產(chǎn)生的失敗任務(wù),這些均交由應(yīng)用程序相關(guān)的ApplicationMaster完成。調(diào)度器僅根據(jù)各個(gè)應(yīng)用程序的資源需求進(jìn)行資源分配,而資源分配單位用一個(gè)抽象概念“資源容器”(Resource Container,簡稱Container)表示,Container是一個(gè)動(dòng)態(tài)資源分配單位,它將內(nèi)存、CPU、磁盤、網(wǎng)絡(luò)等資源封裝在一起,從而限定每個(gè)任務(wù)使用的資源量。此外,該調(diào)度器是一個(gè)可插拔的組件,用戶可根據(jù)自己的需要設(shè)計(jì)新的調(diào)度器,YARN提供了多種直接可用的調(diào)度器,比如Fair Scheduler和Capacity Scheduler等。

(2) 應(yīng)用程序管理器

應(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. ApplicationMaster(AM)

用戶提交的每個(gè)應(yīng)用程序均包含1個(gè)AM,主要功能包括:

與RM調(diào)度器協(xié)商以獲取資源(用Container表示);

將得到的任務(wù)進(jìn)一步分配給內(nèi)部的任務(wù);

與NM通信以啟動(dòng)/停止任務(wù);

監(jiān)控所有任務(wù)運(yùn)行狀態(tài),并在任務(wù)運(yùn)行失敗時(shí)重新為任務(wù)申請(qǐng)資源以重啟任務(wù)。

當(dāng)前YARN自帶了兩個(gè)AM實(shí)現(xiàn),一個(gè)是用于演示AM編寫方法的實(shí)例程序distributedshell,它可以申請(qǐng)一定數(shù)目的Container以并行運(yùn)行一個(gè)Shell命令或者Shell腳本;另一個(gè)是運(yùn)行MapReduce應(yīng)用程序的AM—MRAppMaster,我們將在第8章對(duì)其進(jìn)行介紹。此外,一些其他的計(jì)算框架對(duì)應(yīng)的AM正在開發(fā)中,比如Open MPI、Spark等。

3. NodeManager(NM)

NM是每個(gè)節(jié)點(diǎn)上的資源和任務(wù)管理器,一方面,它會(huì)定時(shí)地向RM匯報(bào)本節(jié)點(diǎn)上的資源使用情況和各個(gè)Container的運(yùn)行狀態(tài);另一方面,它接收并處理來自AM的Container啟動(dòng)/停止等各種請(qǐng)求。

4. Container

Container是YARN中的資源抽象,它封裝了某個(gè)節(jié)點(diǎn)上的多維度資源,如內(nèi)存、CPU、磁盤、網(wǎng)絡(luò)等,當(dāng)AM向RM申請(qǐng)資源時(shí),RM為AM返回的資源便是用Container表示的。YARN會(huì)為每個(gè)任務(wù)分配一個(gè)Container,且該任務(wù)只能使用該Container中描述的資源。

需要注意的是,Container不同于MRv1中的slot,它是一個(gè)動(dòng)態(tài)資源劃分單位,是根據(jù)應(yīng)用程序的需求動(dòng)態(tài)生成的。截至本書完成時(shí),YARN僅支持CPU和內(nèi)存兩種資源,且使用了輕量級(jí)資源隔離機(jī)制Cgroups進(jìn)行資源隔離。

1.3  YARN工作流程

當(dāng)用戶向YARN中提交一個(gè)應(yīng)用程序后,YARN將分兩個(gè)階段運(yùn)行該應(yīng)用程序:

第一個(gè)階段是啟動(dòng)ApplicationMaster;

第二個(gè)階段是由ApplicationMaster創(chuàng)建應(yīng)用程序,為它申請(qǐng)資源,并監(jiān)控它的整個(gè)運(yùn)行過程,直到運(yùn)行完成。

如圖2-11所示,YARN的工作流程分為以下幾個(gè)步驟:

     Hadoop中Yarn基本架構(gòu)是怎么樣的

步驟1 用戶向YARN中提交應(yīng)用程序,其中包括ApplicationMaster程序、啟動(dòng)ApplicationMaster的命令、用戶程序等。

步驟2 ResourceManager為該應(yīng)用程序分配第一個(gè)Container,并與對(duì)應(yīng)的Node-Manager通信,要求它在這個(gè)Container中啟動(dòng)應(yīng)用程序的ApplicationMaster。

步驟3 ApplicationMaster首先向ResourceManager注冊,這樣用戶可以直接通過ResourceManager查看應(yīng)用程序的運(yùn)行狀態(tài),然后它將為各個(gè)任務(wù)申請(qǐng)資源,并監(jiān)控它的運(yùn)行狀態(tài),直到運(yùn)行結(jié)束,即重復(fù)步驟4~7。

步驟4 ApplicationMaster采用輪詢的方式通過RPC協(xié)議向ResourceManager申請(qǐng)和領(lǐng)取資源。

步驟5 一旦ApplicationMaster申請(qǐng)到資源后,便與對(duì)應(yīng)的NodeManager通信,要求它啟動(dòng)任務(wù)。

步驟6 NodeManager為任務(wù)設(shè)置好運(yùn)行環(huán)境(包括環(huán)境變量、JAR包、二進(jìn)制程序等)后,將任務(wù)啟動(dòng)命令寫到一個(gè)腳本中,并通過運(yùn)行該腳本啟動(dòng)任務(wù)。

步驟7 各個(gè)任務(wù)通過某個(gè)RPC協(xié)議向ApplicationMaster匯報(bào)自己的狀態(tài)和進(jìn)度,以讓ApplicationMaster隨時(shí)掌握各個(gè)任務(wù)的運(yùn)行狀態(tài),從而可以在任務(wù)失敗時(shí)重新啟動(dòng)任務(wù)。

     在應(yīng)用程序運(yùn)行過程中,用戶可隨時(shí)通過RPC向ApplicationMaster查詢應(yīng)用程序的當(dāng)前運(yùn)行狀態(tài)。

步驟8 應(yīng)用程序運(yùn)行完成后,ApplicationMaster向ResourceManager注銷并關(guān)閉自己。

1.4 多角度理解YARN

可將YARN看做一個(gè)云操作系統(tǒng),它負(fù)責(zé)為應(yīng)用程序啟動(dòng)ApplicationMaster(相當(dāng)于主線程),然后再由ApplicationMaster負(fù)責(zé)數(shù)據(jù)切分、任務(wù)分配、啟動(dòng)和監(jiān)控等工作,而由ApplicationMaster啟動(dòng)的各個(gè)Task(相當(dāng)于子線程)僅負(fù)責(zé)自己的計(jì)算任務(wù)。當(dāng)所有任務(wù)計(jì)算完成后,ApplicationMaster認(rèn)為應(yīng)用程序運(yùn)行完成,然后退出。

以上是“Hadoop中Yarn基本架構(gòu)是怎么樣的”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI