開源組件系列(10):集羣化服務資源管理系統(Mesos)

目錄

(一)Mesos基本架構

(二)Mesos資源分配策略

(三)Mesos與YARN的對比


Mesos最早是UC Berkeley的一個研究項目,用以解決編程模型和計算框架多樣化環境下,不同框架之間的資源隔離和共享問題。儘管它的直接設計動機與YARN有所不同,但它的架構和實現策略與YARN類似,得到了一定範圍內的認可,例如Twitter就在使用。

(一)Mesos基本架構

Mesos由四個組件構成,如下圖所示:

 

1. Mesos Master

Mesos Master是整個系統的核心,負責管理整個系統中的資源和接入的各種框架,並將Mesos Slave上的資源按照某種策略分配給框架。爲了防止Mesos Master出現故障後導致集羣不可用,Mesos允許用戶配置多個Mesos Master,並通過ZooKeeper進行管理,當主Mesos Master出現故障後,ZooKeeper可馬上從備用Master中選擇一個提升爲新的主Mesos Master。

2. Mesos Slave

Mesos Slave負責接收並執行來自Mesos Maser的命令,並定時將任務執行狀態彙報給Mesos Master。Mesos Slave將節點上的資源使用情況發送給Mesos Master,由Mesos Master中的Allocator模塊決定將資源分配給哪個Framework。值得注意的是,當前Mesos僅考慮了CPU和內存兩種資源,爲了避免任務之間相互干擾,同YARN一樣,Mesos Slave採用了輕量級資源隔離機制Cgroups。

3. Framework Scheduler

Framework是指外部的框架,如MPI、MapReduce、Spark等,這些框架可以通過註冊的方式接入Mesos,以便Mesos進行統一管理和資源分配。Mesos要求接入的框架必須有一個調度器模塊Framework Scheduler,該調度器負責框架內部的任務調度。一個Framework在Mesos上的工作流程爲:首先通過自己的調度器向Mesos註冊,並獲取Mesos分配給自己的資源,然後再由自己的調度器將這些資源分配給框架中的任務。也就是說,同YARN一樣,Mesos系統採用了雙層調度框架:第一層,由Mesos將資源分配給框架;第二層,框架自己的調度器將資源分配給內部的各個任務。當前Mesos支持三種語言編寫的調度器,分別是C++、Java和Python,爲了向各調度器提供統一的接入方式,Mesos內部採用了C++實現了一個MesosSchedulerDriver(調度器驅動器),Framework的調度器可調用該Driver中的接口與Mesos Master交互,完成一些列功能(如註冊、資源分配等)。

4. Framework Executor

Framework Executor主要用於啓動框架內部的任務。由於不同的框架,啓動任務的接口或者方式不同,當一個新的框架要接入Mesos時,通常需要指定專有的Executor,以告訴Mesos如何啓動該框架中的任務。

(二)Mesos資源分配策略

Mesos中最核心的問題是如何構建一個兼具良好擴展性和性能的調度模型,以支持各種計算框架。由於不同框架可能有不同的調度需求,因此,爲Mesos設計一個好的調度模型是一個極具挑戰性的工作。

一種可能的解決方案時候構建一個具有豐富表達能力的中央調度器,該調度器接收來自不同框架的詳細需求描述,比如資源需求、任務調度順序和組織關係等,然後爲這些任務構建一個全局的調度序列。但是,在真實的系統中,由於每種計算框架具有不同的調度需求,且有些框架的調度需求非常複雜,因此,提供一個具有豐富表達能力的API以捕獲所有框架的需求是不太可能的,也就是說,該方案過於理想化,在真實系統中很難實現。

Mesos提供了一種簡化的方案:將資源調度的控制授權給各個框架。Mesos負責按照一些簡單的策略(如FIFO、Fair等)將資源進一步分配給各個作業。考慮到Mesos缺少對各個框架的實際資源需求的瞭解,爲保證框架能高效地獲取到自己需要的資源,它提供了三種機制:

1.資源拒絕

如果Mesos爲某個框架分配的資源不符合它的要求,則框架可以拒絕接受該資源直到出現滿足自己需求的資源。該機制使得框架在複雜的資源約束條件下,還能夠保證Mesos設計簡單和具有良好的擴展性。

2.資源過濾

每次發生資源調度時,Mesos Master均需要與Framework Scheduler進行通信,如果有些框架總是拒絕某些節點上的資源,那麼由於額外的通信開銷會使得調度性能變得低效。爲避免不必要的通信,Mesos提供了資源過濾機制,允許框架只接收來自“剩餘資源量大於L的Mesos Slave”或者“位於特定列表中的Mesos Slave”上的資源。

3.資源回收

如果某個框架在一定的時間內沒有爲分配的資源返回對應的任務,則Mesos將回收爲其分配資源,並將這些資源重新分配給其他框架。爲了支持多維資源調度,Mesos採用了主資源公平調度算法(DRF),該算法擴展了最大最小公平算法(max-min fairness),使其能夠支持多維資源的調度。

(三)Mesos與YARN的對比

儘管YARN和Mesos誕生於不同的公司和研究機構,但它們的架構卻大同小異。總體來說,YARN起源於大數據領域,目前已經形成了良好的生態系統,與其他大數據系統結合緊密;Mesos源自於集羣化服務部署,因而更加適合服務器部署與管理。下圖爲兩者組件的對應關係與相關指標對比:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章