Yarn 的基本設(shè)計(jì)思想是將 MapReduce V1 中的 JobTracker 拆分為兩個(gè)獨(dú)立的服務(wù):ResourceManager 和 ApplicationMaster。
ResourceManager 負(fù)責(zé)整個(gè)系統(tǒng)的資源管理和分配,ApplicationMaster 負(fù)責(zé)單個(gè)應(yīng)用程序的管理。
-
ResourceManager
RM 是一個(gè)全局的資源管理器,負(fù)責(zé)整個(gè)系統(tǒng)的資源管理和分配,它主要由兩個(gè)部分組成:調(diào)度器(Scheduler)和應(yīng)用程序管理器(Application Manager)。
調(diào)度器:根據(jù)容量、隊(duì)列等限制條件,將系統(tǒng)中的資源分配給正在運(yùn)行的應(yīng)用程序,在保證容量、公平性和服務(wù)等級(jí)的前提下,優(yōu)化集群資源利用率,讓所有的資源都被充分利用;
應(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í)重啟它。 -
ApplicationMaster
用戶提交的一個(gè)應(yīng)用程序會(huì)對(duì)應(yīng)于一個(gè) ApplicationMaster,它的主要功能有:- 與 RM調(diào)度器協(xié)商以獲得資源,資源以 Container 表示。
- 將得到的任務(wù)進(jìn)一步分配給內(nèi)部的任務(wù)。
- 與 NN (NameNode)通信以啟動(dòng)/停止任務(wù)。
- 監(jiān)控所有的內(nèi)部任務(wù)狀態(tài),并在任務(wù)運(yùn)行失敗的時(shí)候重新為任務(wù)申請(qǐng)資源以重啟任務(wù)。
-
NodeManager
NodeManager 是每個(gè)節(jié)點(diǎn)上的資源和任務(wù)管理器,
一方面,它會(huì)定期地向 RM 匯報(bào)本節(jié)點(diǎn)上的資源使用情況和各個(gè) Container 的運(yùn)行狀態(tài);
另一方面,它接收并處理來自 AM 的 Container 啟動(dòng)和停止請(qǐng)求。 -
Container
Container 是 Yarn 中的資源抽象,封裝了各種資源。
一個(gè)應(yīng)用程序會(huì)分配一個(gè) Container,這個(gè)應(yīng)用程序只能使用這個(gè) Container 中描述的資源。
不同于 MapReduce V1 中槽位 slot 的資源封裝,Container 是一個(gè)動(dòng)態(tài)資源的劃分單位,更能充分利用資源。文章來源:http://www.zghlxwxcb.cn/news/detail-600800.html
我們下期見,拜拜!文章來源地址http://www.zghlxwxcb.cn/news/detail-600800.html
到了這里,關(guān)于Yarn 集群的架構(gòu)和工作原理的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!