YARN最基本的想法就是將資源管理的功能和作業(yè)調(diào)度/監(jiān)控的功能分隔在不同的進(jìn)程中。即使用一個(gè)全局的資源管理器(RM)和每個(gè)應(yīng)用一個(gè)的應(yīng)用節(jié)點(diǎn)(AM)。應(yīng)用要么是一個(gè)單獨(dú)的作業(yè),要么是一組滿足有向無(wú)環(huán)圖的作業(yè)。
資源管理器和節(jié)點(diǎn)管理器共同組成了數(shù)據(jù)計(jì)算框架。資源管理器負(fù)責(zé)為系統(tǒng)中的應(yīng)用分配資源。節(jié)點(diǎn)管理器是各個(gè)機(jī)器的框架代理,負(fù)責(zé)管理容器,監(jiān)控資源使用情況(CPU,內(nèi)存,磁盤,網(wǎng)絡(luò))并向資源管理器/調(diào)度器報(bào)告。
AM(ApplicationMaster)以應(yīng)用為單位,它實(shí)際是一個(gè)特定于框架的類庫(kù),它從資源管理器申請(qǐng)資源,在節(jié)點(diǎn)管理器上運(yùn)行并監(jiān)控任務(wù)。

資源管理器有兩個(gè)主要組件:調(diào)度器和應(yīng)用管理器(ApplicationManager)。
調(diào)度器負(fù)責(zé)根據(jù)容量,隊(duì)列等限制為容器分配資源,它不負(fù)責(zé)監(jiān)控或跟蹤應(yīng)用的狀態(tài),它也不保證會(huì)在應(yīng)用故障或硬件故障后重啟失敗的任務(wù)。調(diào)度器根據(jù)應(yīng)用對(duì)資源的要求執(zhí)行調(diào)度工作,即對(duì)資源做的抽象:容器,容器包含的元素有內(nèi)存,CPU,磁盤和網(wǎng)絡(luò)等。
調(diào)度器有一個(gè)可以按照隊(duì)列或應(yīng)用將資源分組的可插拔策略。當(dāng)前的調(diào)度器CapacityScheduler和FairScheduler都使用了這個(gè)策略。
應(yīng)用管理器負(fù)責(zé)接受作業(yè)提交,為特定與AM的應(yīng)用協(xié)商第一個(gè)容器,并在發(fā)生故障是重啟AM容器。AM負(fù)責(zé)從調(diào)度器協(xié)商容器資源,跟蹤并監(jiān)控狀態(tài)。
YARN也支持資源預(yù)留概念,使用ReservationSystem實(shí)現(xiàn),該組件允許用戶指定一個(gè)有關(guān)超時(shí)和時(shí)序約束(例如deadline)的配置,并預(yù)留資源來(lái)確保重要的作業(yè)可以正常運(yùn)行。ReservationSystem隨著時(shí)間追蹤資源,執(zhí)行預(yù)留的準(zhǔn)入控制,并動(dòng)態(tài)指示調(diào)度器確保預(yù)留了足夠資源。
為了將YARN擴(kuò)展至上千個(gè)節(jié)點(diǎn),YARN通過YARN federation特性提供了聯(lián)合概念。聯(lián)合特性可以將多個(gè)YARN集群聯(lián)結(jié)起來(lái),對(duì)外看起來(lái)像是一個(gè)集群。這個(gè)特性可以實(shí)現(xiàn)大規(guī)模擴(kuò)展,或者可以用對(duì)個(gè)獨(dú)立集群運(yùn)行超大作業(yè)。