Hadoop中的YARN(Yet Another Resource Negotiator)是一種新的Hadoop資源管理器,是一個通用資源管理系統,可為上層應用提供統一的資源管理和調度。以下是其相關介紹:
?
核心思想
?
將JobTracker的資源管理和作業調度/監控功能分離,創建一個全局的ResourceManager(RM)和若干個針對應用程序的ApplicationMaster(AM)。
?
主要架構
?
- ResourceManager(RM):是全局資源管理器,負責整個系統的資源管理和分配,由調度器(Scheduler)和應用程序管理器(ApplicationsManager,ASM)構成。調度器根據容量、隊列等限制條件將資源分配給應用程序;應用程序管理器負責管理所有應用程序,包括提交、啟動AM及監控其狀態。
?
- ApplicationMaster(AM):每個應用程序包含一個AM,主要功能是與RM調度器協商獲取資源,將任務分配給內部任務,與NM通信啟動/停止任務,監控任務狀態并在失敗時重啟任務。
?
- NodeManager(NM):是每個節點上的資源和任務管理器,定時向RM匯報資源使用和Container運行狀態,接收并處理來自AM的Container啟動/停止等請求。
?
- Container:是YARN中的資源抽象,封裝了節點上的多維度資源,如內存、CPU等。AM向RM申請資源時,RM返回的資源用Container表示,任務只能使用Container中描述的資源。
?
優點
?
大大減小了JobTracker的資源消耗,讓監測任務狀態的程序分布式化;AM可變更,使更多類型的編程模型能在Hadoop集群中運行;以內存為單位表示資源更合理;將監控任務運行狀況的負擔從JobTracker轉移到AM,提高了系統的穩定性和可擴展性。
?
調度器
?
YARN提供了多種調度器,如FIFO Scheduler(先進先出,適合低負載集群)、Capacity Scheduler(將資源分為多個隊列,允許共享集群,保證每個隊列最小資源使用)和Fair Scheduler(公平地將資源分給應用,使所有應用平均得到相同資源份額)。