YARN的基本思想
YARN的基本思想是將資源管理和作業調度以及監控的功能拆分為單獨的守護進程。這種架構思想是擁有一個全局的ResourceManager(RM)和每個應用程序的ApplicationMaster(AM)。應用程序可以是單個作業,也可以是作業的DAG。
YARN的組成
ResourceManager和NodeManager組成數據計算框架。ResourceManager是具有在系統中所有應用程序之間仲裁資源的最終權限。NodeManager是每臺機器的框架代理,負責監控容器的資源使用情況(cpu,內存,磁盤,網絡),并將其報告給ResourceManager或Scheduler。
實際上,每個應用程序的ApplicationMaster是特定于框架的庫,其任務是對來自ResourceManager的資源進行協調,并與NodeManager一起執行和監控任務。
ResourceManager
ResourceManager具有兩個主要組件:Scheduler和ApplicationsManager。
Scheduler
Scheduler負責將資源分配給各種正在運行的應用程序,但要遵循熟悉的容量,隊列等約束。從某種意義上說,調度器是純調度程序,它不監控或跟蹤應用程序的狀態。此外,它也不保證由于應用程序故障或硬件故障而重新啟動失敗的任務。調度程序根據應用程序的資源需求執行調度功能;它基于資源容器的抽象概念來做到這一點,該容器包含諸如內存,cpu,磁盤,網絡等因素。
調度程序具有可插拔策略,該策略負責在各種隊列,應用程序等之間分配群集資源。當前的調度程序(例如CapacityScheduler和FairScheduler)將是一些插件示例。
ApplicationsManager
ApplicationsManager負責接受作業提交,協商用于執行特定于應用程序的ApplicationMaster的第一個容器,并提供在失敗時重新啟動ApplicationMaster容器的服務。每個應用程序ApplicationMaster負責與調度程序協商適當的資源容器,跟蹤其狀態并監控其進度。
YARN作業調度
hadoop-2.x中的MapReduce與以前的穩定版本(hadoop-1.x)保持API兼容性。這意味著僅通過重新編譯,所有MapReduce作業仍應在YARN上保持不變。
YARN通過ReservationSystem支持資源保留的概念,ReservationSystem是一個組件,該組件使用戶可以指定資源隨時間的限制情況(例如,截止日期),并保留資源以確保重要工作的可預測執行。ReservationSystem會隨著時間的推移跟蹤資源,執行預留的準入控制,并動態指示底層的調度程序以確保預留已滿。
為了將YARN擴展到成千上萬個節點,YARN通過YARN聯合功能支持聯合的概念。聯合允許將多個YARN(子)集群簇透明地連接在一起,并使它們看起來像是一個整體簇。這可以用于實現更大的規模,和允許將多個獨立的集群一起用于非常大的工作,或用于具有全部能力的租戶。