Hadoop之核心Yarn的優點以及不足

Hadoop之核心Yarn的優點以及不足

Apache Hadoop YARN (Yet Another Resource Negotiator,另一種資源協調者)是一種新的 Hadoop 資源管理器,它是一個通用資源管理系統,可為上層應用提供統一的資源管理和調度,它的引入為集群在利用率、資源統一管理和數據共享等方面帶來了巨大好處。

YARN的優點

  • 將資源管理和作業控制分離,減小JobTracker壓力

  • YARN的設計大大減小了 JobTracker(也就是現在的 ResourceManager)的資源消耗,並且讓監測每一個 Job 子任務 (tasks) 狀態的程序分佈式化了,更安全、更優美。

  • 老的框架中,JobTracker一個很大的負擔就是監控job下的tasks的運行狀況,現在,這個部分就扔給ApplicationMaster做了而ResourceManager中有一個模塊叫做ApplicationsManager(ASM),它負責監測ApplicationMaster的運行狀況。

  • 能夠支持不同的計算框架

將計算框架和底層存儲調度分開,以支持更多的計算框架。在YARN中ApplicationMaster是一個可變更的部分,用戶可以對不同的計算框架寫自己的 AppMst,讓更多類型的計算框架能夠跑在Hadoop集群中,可以參考YARN官方配置模板中的mapred-site.xml配置。

  • 資源管理更加合理

  • 使用Container對資源進行抽象,Container不同於MRv1中的slot,它是一個動態資源劃分單位,是根據應用程序的需求動態生成的,比之前以slot數目更合理。

  • 且使用了輕量級資源隔離機制Cgroups進行資源隔離。

  • Container的設計避免了之前的map slot/reduce slot分開造成集群資源閒置的尷尬情況。

YARN的不足

YARN是一個雙層調度器(Two-level scheduler),解決了中央調度器(Monolithic scheduler)的不足(中央調度器典型的代表就是JobTracker),雙層調度架構看上去為調度增加了靈活性和併發性,但實際上它保守的資源可見性和上鎖算法(使用悲觀併發)也限制了靈活性和併發性。第一,保守的資源可見性導致各框架無法感知整個集群的資源使用情況,有空閒資源無法通知排隊的進程,容易造成資源的浪費;第二,上鎖算法降低了併發性,調度器會將資源分配給一個架構,只有該架構返回資源後,調度器才回將該部分資源分配給其他架構,在第一個分配過程中,資源相當於被鎖住,從而降低了併發性。總結來說,YARN同其他雙層架構的調度器(例如:Mesos)都有的不足為:

  • 各個應用無法感知集群整體資源的使用情況,只能等待上層調度推送信息。

  • 資源分配採用輪詢、ResourceOffer機制(mesos),在分配過程中使用悲觀鎖,併發粒度小。

  • 缺乏一種有效的競爭或優先搶佔的機制。

為了改善雙層調度系統的的不足,尤其是各個應用無法感知集群整體資源的使用情況和悲觀加鎖控制導致的併發性不高這兩個不足,共享狀態調度器(Shared State Scheduler)被越來越多的人所重視,其中最具代表性的就是Google的Omega。共享狀態調度器在雙層調度器的基礎上做了改進:

  • 簡化了雙層調度器中的全局資源管理器,改為由一個Cell State來記錄集群內的資源使用情況,這些使用情況都是共享的數據,以此來達到與全局資源管理器相同的效果。

  • 所有任務訪問共享數據時,採用樂觀併發控制方法。

共享調度器也存在不足。例如,當某一資源被不同任務同時訪問時容易產生衝突,訪問的任務越多時,衝突次數就會越多,衝突次數越高調度器的性能下降越快,這將影響調度器的工作效率和工作性能。


分享到:


相關文章: