1. 程式人生 > >Apache YARN各元件功能概述

Apache YARN各元件功能概述

Apache YARN是將之前Hadoop1.x的 JobTracker 功能分別拆到不同的元件裡面了,每個元件分別負責不同的功能。在Hadoop1.x中, JobTracker 負責管理叢集的資源,作業排程以及作業監控;YARN把這些功能分別拆到ResourceManager 和 ApplicationMaster 中了。而之前的TaskTracker被NodeManager替代。下面分別介紹YAEN的各個元件的作用。
ResourceManager
每個Hadoop叢集只會有一個ResourceManager(如果是HA的話會存在兩個,但是有且只有一個處於active狀態),它負責管理整個叢集的計算資源,並將這些資源分別給應用程式。ResourceManager 內部主要有兩個元件:


Scheduler:這個元件完全是插拔式的,使用者可以根據自己的需求實現不同的排程器,目前YARN提供了FIFO、容量以及公平排程器。這個元件的唯一功能就是給提交到叢集的應用程式分配資源,並且對可用的資源和執行的佇列進行限制。Scheduler並不對作業進行監控;
ApplicationsManager (AsM):這個元件用於管理整個叢集應用程式的application masters,負責接收應用程式的提交;為application master啟動提供資源;監控應用程式的執行進度以及在應用程式出現故障時重啟它。
NodeManager
NodeManager是YARN中每個節點上的代理,它管理Hadoop叢集中單個計算節點,根據相關的設定來啟動容器的。NodeManager會定期向ResourceManager傳送心跳資訊來更新其健康狀態。同時其也會監督Container的生命週期管理,監控每個Container的資源使用(記憶體、CPU等)情況,追蹤節點健康狀況,管理日誌和不同應用程式用到的附屬服務(auxiliary service)。

ApplicationMaster
ApplicationMaster是應用程式級別的,每個ApplicationMaster管理執行在YARN上的應用程式。YARN 將 ApplicationMaster看做是第三方元件,ApplicationMaster負責和ResourceManager scheduler協商資源,並且和NodeManager通訊來執行相應的task。ResourceManager 為 ApplicationMaster 分配容器,這些容器將會用來執行task。ApplicationMaster 也會追蹤應用程式的狀態,監控容器的執行進度。當容器執行完成, ApplicationMaster 將會向 ResourceManager 登出這個容器;如果是整個作業執行完成,其也會向 ResourceManager 登出自己,這樣這些資源就可以分配給其他的應用程式使用了。

Container
Container是與特定節點繫結的,其包含了記憶體、CPU磁碟等邏輯資源。不過在現在的容器實現中,這些資源只包括了記憶體和CPU。容器是由 ResourceManager scheduler 服務動態分配的資源構成。容器授予 ApplicationMaster 使用特定主機的特定數量資源的許可權。ApplicationMaster 也是在容器中執行的,其在應用程式分配的第一個容器中執行。

作業的完整執行如下所示: