Apache Mesos調度機制

來源:互聯網
上載者:User

1. 前言

調度器是Mesos的核心部件,主要負責將各個slave上資源配置給各個framework,常見的調度機制有FIFO,Fair Scheduler,Capacity Scheduler,Quincy,Condor等。 Mesos為了支援多framework接入,採用了雙層調度機制,首先,由mesos中的 allocator將資源配置給framework,然後又由framework自己的調度器將資源配置給任務。 本文重點介紹mesos中的 allocator模組。

(什麼是apache mesos? 參考:《統一資源管理與調度平臺(系統)介紹》,本文分析基於Mesos SVN Revision 1327410)

2. Mesos調度機制

Mesos中的調度機制被稱為「Resource Offer」,採用了基於資源量的調度機制,這不同于Hadoop中的基於slot的機制。 在mesos中,slave直接將資源量(CPU和記憶體)彙報 給master,由master將資源量按照某種機制分配給framework,其中,「某種機制」是「Dominant Resource Fairness(DRF)」

對於類似mesos採用雙層調度框架的系統,在設計時,需要解決以下問題:「Mesos在不知道各個framework資源需求的情況下,如何滿足 其需求? 」,更具體一些,「Mesos在不知道framework中哪些資料存放在哪些節點情況下,如何做到資料locality? 」為了解決該問 題,mesos提供了「reject offer」機制,允許framework暫時拒絕不滿足其資源需求的slave,在此,mesos採用了類似于Hadoop中的「delay scheduling「調度機制。

在mesos中,作業調度是一個分散式的過程,當出現失敗情況時,需要表現出一定的高效性和魯棒性。 為此,mesos提供了以下機制:

(1)filters機制。 每次調度過程,mesos-master需要與framework-scheduler進行通信,如果有些framework總是拒絕slave,那麼由 于額外的通信開銷會使得調度性能低效。 為此避免不必要的通信,mesos提供了filters機制,允許framework只接收「剩餘資源量大於L的 slave」或者「只接收node清單中的slave」。

(2)rescinds機制。 如果某個framework在一定的時間內沒有為分配的資源返回對應的任務,則mesos會回收其資源量,並將這些資源配置給其他framework。

3. Dominant Resource Fairness(DRF)

DRF是一種支援多資源的max-min fair 資源配置機制,其中max表示max{CPU,mem},而min表示min{user1,user2,...} =min{max{CPU1,mem1}, max{CPU2,mem2}, ...},其中user代表mesos中的framework,演算法偽代碼如下圖所示:

舉例說明,假設系統中共有9 CPUs 和18 GB RAM,有兩個user(framework)分別運行了兩種任務,分別需要的資源量為<1 CPU, 4 GB> 和 <3 CPUs, 1 GB>。 對於使用者A,每個task要消耗總CPU的1/9和總記憶體的2/9,因而A的支配性資源為記憶體;對於使用者B,每個task要消耗總CPU的 1/3和總記憶體的1/18,因而B的支配性資源為CPU。 DRF將均衡所有使用者的支配性資源,即:A獲取的資源量為:<3 CPUs,12 GB>,可運行3個task;而B獲取的資源量為<6 CPUs, 2GB>,可運行2個task,這樣分配, 每個使用者獲取了相同比例的支配性資源,即:A獲取了2/3的RAMs,B獲取了2/3的CPUs。

DRF演算法的一個可能的調度序列如下圖所示:

DRF的好處是可滿足四個特性,即:Sharing incentive,Strategy-proofness,Envy-freeness和Pareto efficiency,具體含義參考後面給出的「參考資料」。

4. Mesos調度問題

Mesos中的DRF調度演算法過分的追求公平,沒有考慮到實際的應用需求。 在實際生產線上,往往需要類似于Hadoop中Capacity Scheduler的調度機制,將所有資源分成若干個queue,每個queue分配一定量的資源,每個user有一定的資源使用上限;更使用的調度策略 是應該支援每個queue可單獨定制自己的調度器策略,如:FIFO,Priority等。

由於Mesos採用了雙層調度機制,在實際調度時,將面臨設計決策問題:第一層和第二層調度器分別實現哪幾個調度機制,即:將大部分調度機制放到第一層調度器,還是第一層調度器僅支援簡單的資源配置(分配比例由管理員指定)?

Mesos採用了Resource Offer機制(不同于Hadoop中的基於slot的調度機制),這種調度機制面臨著資源碎片問題,即:每個節點上的資源不可能全部被分配完,剩下的一點可能不足以讓任何任務運行,這樣, 便產生了類似于作業系統中的記憶體碎片問題。

您可能還喜歡:1 Apache Mesos概念架構2 Apache Mesos底層基礎庫3 Apache Mesos模組間通信架構4 揭秘你不知道的分散式雲計算框架

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.