Apache Hadoop YARN (官網文章)
yarn的根本目標是為了分散資源管理還有任務排程以及監視功能到分離的守護程序。這個目的是擁有一個全域性ResourceManager 和每個應用程式。 應用程式可以是單個作業,也可以是作業的DAG。
resource manager和node manager 構成了資料計算框架。 resource manager 擁有最大的權利去決定每個應用所能擁有的系統資源。 Node Manager 是每個機器框架代理,負責容器,監視他們的資源使用(cpu,memory,disk,network) 並報告給ResourceManager、Scheduler(排程程式)。
每個程式ApplicationMaster其實是一個特定於框架的庫,其任務是協調來自ResourceManager的資源,並與nodemanager一起執行和監視任務。
ResourceManager 有兩大主要的元件:Scheduler(排程器)和ApplicationMaster
Scheduler 是負責分配不同的資源給各種各樣正在執行的應用程式,以熟悉能力和佇列的約束。Scheduler在感官上是一種純粹的排程器,因為他沒有監視和追蹤應用程式狀態的表現。他不提供保證能讓那些因為程式失敗和硬體問題失敗重新啟動,它履行他的排程能力基於應用程式的資源需求。它是基於資源Container的抽象概念,它包含記憶體,cpu,磁碟,網路等元素。
排程程式有一個可插入策略,負責分配叢集的資源到不同的佇列和應用程式中,當前的排程程式將是一些程式的示例。
ApplicationMaster 負責接受任務提交,協商第一個容器以執行特定應用程式和提供重啟失敗的ApplicationMaster 的服務,每個應用程式ApplocationMaster 有義務從排程器那裡協商適當的資源,跟蹤他們的狀態並且監聽進度。
Hadoop 2.x的mapreduce 維護API與先前穩定版本的相容性,這意味著所有的mapreduce作業都應該在yarn上保持不變。
yarn支援資源預定的概念,(通過ReservationSystem),一個元件允許使用者去指定資源時間和暫時約束(比如:deadline),以及後備資源的配置檔案,儲備一些資源去確保可能會有的重要作業執行,(這句太難了)
YARN supports the notion of resource reservation via the ReservationSystem, a component that allows users to specify a profile of resources over-time and temporal constraints (e.g., deadlines), and reserve resources to ensure the predictable execution of important jobs.The ReservationSystem tracks resources over-time, performs admission control for reservations, and dynamically instruct the underlying scheduler to ensure that the reservation is fullfilled
【YARN支援的概念,資源預留通過ReservationSystem,即允許使用者在指定時間資源和時間的限制(例如,截止日期),以及後備資源的配置檔案,以確保重要jobs.The可預見的執行元件ReservationSystem跟蹤資源超時,執行預留的准入控制,並動態指示基礎排程程式確保預留已滿。】
為了測量yarn是否超過了成千上萬的節點,yarn支援聯合的概念(通過yarn Federation 特徵),聯合允許透明地將多個群集連線在一起,並且讓他們表現得想一個大叢集一樣。 這可以用來取得大的聯合,並且允許多個獨立的叢集去一起為一些很大的作業工作,或者用於具有跨所有工作的容量的租戶。