YARN中本身總結的幾個關鍵點

之前在Hadoop 1.0中JobTracker主要完成兩項功能:資源的管理和做業控制。在集羣規模過大的場景下,JobTracker
存在如下不足:
1)JobTracker 單點故障。
2)JobTracker 承受的訪問壓力大,影響系統的擴展性。
3)不支持MapReduce以外的計算框架,好比Storm、Spa rk、Flink

所以在YARN的設計中,資源的管理和做業控制是分離開的。取代JobTracker的是ResourceManager、ApplicationMaster兩個部分。

  ● Resource Manager是一個全局的資源管理器 ,它作的事情是調度、啓動每個Job所屬的ApplicationMaster、另外監控ApplicationMaster的存在狀況。注:RM只負責監控AM,在AM運行失敗時候啓動它,RM並不負責AM內部任務的容錯,這由AM來完成。(是經過RM中的applicationManager來完成的)
  ● ApplicationMaster是每個Job(不是每一種)都有的一個部分,ApplicationMaster能夠運行在ResourceManager之外的機器上,每一個應用程序對應一個ApplicationMaster。。
  ● NodeManager是ResourceManager的在每一個節點的代理,負責 Container 狀態的維護,並向RM保持心跳。
  ● 另外,YARN使用Container對資源進行抽象,它封裝了某個節點上必定量的資源(如今YARN僅支持CPU和內存兩種資源)。當AM向RM申請資源時,RM爲AM返回的資源使用Container表示。YARN會爲每一個任務分配一個或多個Container,且該任務只能使用該Container中描述的資源。(注:AM也是運行在一個Container中),)目前能夠支持多種計算框架運行在YARN上面,好比MapReduce、Storm、Spark、Flink。

說明一下container
Container 是 YARN 中的資源抽象,它封裝了某個節點上的多維度資源,如內存、CPU、磁盤、網絡等,當AM向RM申請資源時,RM爲AM返回的資源即是用Container表示的。YARN會爲每一個任務分配一個Container,且該任務只能使用該Container中描述的資源。

要使用一個 YARN 集羣,首先須要來自包含一個應用程序的客戶的請求。

YARN設計的優勢
  ● 將資源管理和做業控制分離,減少JobTracker壓力
      ○ YARN的設計大大減少了 JobTracker(也就是如今的 ResourceManager)的資源消耗,而且讓監測每個 Job 子任務 (tasks) 狀態的程序分佈式化了,更安全、更優美。
      ○ 老的框架中,JobTracker一個很大的負擔就是監控job下的tasks的運行情況,如今,這個部分就扔給ApplicationMaster作了而ResourceManager中有一個模塊叫作ApplicationsManager(ASM),它負責監測ApplicationMaster的運行情況。
  ● 可以支持不一樣的計算框架

工做原理



mapreduce on yarn



ARN的不足與展望
YARN是一個雙層調度器(Two-level scheduler),解決了中央調度器(Monolithic scheduler)的不足(中央調度器典型的表明就是JobTracker),雙層調度架構看上去爲調度增長了靈活性和併發性,但實際上它保守的資源可見性和上鎖算法(使用悲觀併發)也限制了靈活性和併發性。第一,保守的資源可見性致使各框架沒法感知整個集羣的資源使用狀況,有空閒資源沒法通知排隊的進程,容易形成資源的浪費;第二,上鎖算法下降了併發性,調度器會將資源分配給一個架構,只有該架構返回資源後,調度器纔回將該部分資源分配給其餘架構,在第一個分配過程當中,資源至關於被鎖住,從而下降了併發性。總結來講,YARN同其餘雙層架構的調度器(例如:Mesos)都有的不足爲:
  ● 各個應用沒法感知集羣總體資源的使用狀況,只能等待上層調度推送信息。
  ● 資源分配採用輪詢、ResourceOffer機制(mesos),在分配過程當中使用悲觀鎖,併發粒度小。
  ● 缺少一種有效的競爭或優先搶佔的機制。
爲了改善雙層調度系統的的不足,尤爲是各個應用沒法感知集羣總體資源的使用狀況和悲觀加鎖控制致使的併發性不高這兩個不足,共享狀態調度器(Shared State Scheduler)被愈來愈多的人所重視,其中最具表明性的就是Google的Omega。共享狀態調度器在雙層調度器的基礎上作了改進:
  ● 簡化了雙層調度器中的全局資源管理器,改成由一個Cell State來記錄集羣內的資源使用狀況,這些使用狀況都是共享的數據,以此來達到與全局資源管理器相同的效果。
  ● 全部任務訪問共享數據時,採用樂觀併發控制方法。
共享調度器也存在不足。例如,當某一資源被不一樣任務同時訪問時容易產生衝突,訪問的任務越多時,衝突次數就會越多,衝突次數越高調度器的性能降低越快,這將影響調度器的工做效率和工做性能。

算法

相關文章
相關標籤/搜索