1. 程式人生 > >6.1 Architecture(YARN)

6.1 Architecture(YARN)

YARN的基本思想是將資源管理和作業排程/監控的功能分解為單獨的守護程序。我們的想法是擁有一個全域性ResourceManager(RM)和每個應用程式ApplicationMaster(AM)。應用程式可以是單個作業,也可以是作業的DAG。

ResourceManager和NodeManager構成了資料計算框架。ResourceManager是在系統中的所有應用程式之間仲裁資源的最終許可權。NodeManager是每臺機器框架代理,負責容器,資源使用情況(CPU,記憶體,磁碟,網路)的監控,並將其報告給ResourceManager / Scheduler。

每個應用程式ApplicationMaster實際上是一個特定於框架的庫,其任務是協調來自ResourceManager的資源,並與NodeManager一起執行和監控任務。

ResourceManager有兩個主要元件:Scheduler和ApplicationsManager。

排程程式負責根據熟悉的容量,佇列等約束將資源分配給各種正在執行的應用程式。排程程式是純排程程式,因為它不執行應用程式狀態的監控或跟蹤。此外,由於應用程式故障或硬體故障,它無法保證重啟失敗的任務。排程程式根據應用程式的資源需求執行其排程功能; 它是基於資源Container的抽象概念,它包含記憶體,cpu,磁碟,網路等元素。

排程程式具有可插拔策略,該策略負責在各種佇列,應用程式等之間對叢集資源進行分割槽。當前的排程程式(如CapacitySchedulerFairScheduler)

將是外掛的一些示例。

ApplicationsManager負責接受作業提交,協調第一個容器以執行特定於應用程式的ApplicationMaster,並提供在失敗時重新啟動ApplicationMaster容器的服務。每個應用程式ApplicationMaster負責從Scheduler協調適當的資源容器,跟蹤其狀態並監視進度。

hadoop-2.x中的MapReduce維護API與先前穩定版本(hadoop-1.x)的相容性這意味著只需重新編譯,所有MapReduce作業仍應在YARN之上保持不變。

YARN支援通過ReservationSystem進行資源預留的概念,即允許使用者在指定時間資源和時間的限制(例如,截止日期),以及後備資源的配置檔案,以確保重要jobs的執行。可預見的執行元件

ReservationSystem跟蹤資源超時,執行預留的准入控制,並動態指示基礎排程程式確保預留已滿。

為了將YARN擴充套件到超過幾千個節點,YARN 通過YARN Federation功能支援Federation的概念。Federation允許透明地將多個yarn(子)叢集連線在一起,並使它們看起來像一個大型叢集。這可以用於實現更大規模,和/或允許多個獨立叢集一起用於非常大的工作,或者用於具有跨所有工作容量的租戶。