Apache Hadoop YARN

YARN 的基本概念是將資源管理和工作排程/監控的功能分拆成不同的守護程式。這個概念是有一個全域資源管理員 (RM) 和每個應用程式的應用程式主控程式 (AM)。應用程式可能是單一工作或工作 DAG。

資源管理員和節點管理員形成資料運算架構。資源管理員是最終權限,在系統中所有應用程式之間仲裁資源。節點管理員是每個機器架構代理程式,負責容器、監控其資源使用量 (CPU、記憶體、磁碟、網路) 並將其報告給資源管理員/排程器。

每個應用程式的應用程式主控程式實際上是一個特定於架構的函式庫,負責與資源管理員協商資源,並與節點管理員合作執行和監控工作。

MapReduce NextGen Architecture

資源管理員有兩個主要元件:排程器和應用程式管理員。

排程器負責將資源分配給各種執行中的應用程式,並遵守容量、佇列等常見限制。排程器是純排程器,意即它不會執行應用程式的狀態監控或追蹤。此外,它也不保證重新啟動因應用程式故障或硬體故障而失敗的任務。排程器會根據應用程式的資源需求執行其排程功能;它會根據資源容器的抽象概念執行,其中包含記憶體、CPU、磁碟、網路等元素。

排程器有一個可插入的政策,負責在各種佇列、應用程式等之間分割叢集資源。目前的排程器,例如 CapacitySchedulerFairScheduler,就是一些外掛程式的範例。

應用程式管理員負責接受工作提交,協商第一個容器來執行應用程式特定的應用程式主控程式,並提供在應用程式主控程式容器發生故障時重新啟動該容器的服務。每個應用程式的應用程式主控程式負責從排程器協商適當的資源容器,追蹤其狀態並監控進度。

Hadoop-2.x 中的 MapReduce 保持與先前穩定版本 (Hadoop-1.x) 的API 相容性。這表示所有 MapReduce 工作都應該在 YARN 上執行而不變更,只需重新編譯即可。

YARN 支援透過 ReservationSystem 實現資源保留的概念,這是一個元件,允許使用者指定資源的時序設定檔和時序限制 (例如,期限),並保留資源以確保重要工作的可預測執行。ReservationSystem 會追蹤時序資源,執行保留的入取控制,並動態指示底層排程器以確保保留已完成。

為了將 YARN 擴充到數千個節點以上,YARN 支援透過 YARN Federation 功能實現聯合的概念。聯合允許透明地將多個 YARN (子) 叢集連接在一起,並讓它們看起來像一個單一的龐大叢集。這可以用於實現更大的規模,和/或允許多個獨立叢集一起用於非常大的工作,或用於在所有叢集上都有容量的租戶。