調度框架:兩層調度
為什么會有兩層調度?
單體調度的核心是所有節點的資源以及用戶的任務均由中央服務器統一管理和調度,這樣中央服務器容易成為單點瓶頸,
為了提升調度效率并支持多種型別的任務,我們可以嘗試把資源和任務分開調度,也就是說一層調度器負責資源管理和分配,另一層調度器負責任務與資源的匹配,
兩層調度結構對應的是兩層調度器,資源的使用情況同時由中央調度器和第二層調度器管理,中央調度器從整體上進行資源的管理和分配,將資源分配到第二層調度器,再由第二層調度器負責將資源與具體的任務匹配,
兩層調度的詳細結構圖如下,

兩層調度器中的第一層調度器仍是一個經過簡化的中央調度器,通常放在分布式集群管理系統中,而第二層調度則是由各個應用程式框架完成,兩層調度器的職責:
- 第一層調度器負責管理資源并向框架分配資源,
- 第二層調度器接收分布式集群管理系統中第一層調度器分配的資源,然后根據任務和接收到的資源進行分配,
常見的常用了兩層調度結構的集群管理系統有:
- Apache Mesos
- Hadoop YARN
Mesos中的兩層調度設計
Mesos本身實作的調度器是第一層調度,負責資源管理,第二層調度交給了應用框架來完成,
以Mesos為基礎的分布式資源管理與調度框架包括兩部分:
- 資源管理集群,由一個Master節點和多個Slave節點組成的集中式系統,它由一個Master節點,負責管理Slave節點,并對接上層框架,Slave節點向Master節點周期匯報資源狀態資訊,并執行框架提交的任務,
- 框架,負責應用管理和調度的“組件“,它主要由調度器和執行器組成,調度器可以從Master節點獲取集群節點的資訊,執行器在Slave節點上執行任務,
Mesos兩層調度的基本原理:
- 框架向Mesos Master注冊,
- Mesos Slave節點定期向Mesos Master上報本節點的空閑資源,
- Mesos Master的Scheduler行程收集所有節點的空閑資源資訊,并以Resource Offer的方式將空閑的資源發送給注冊的框架,
- 框架的Scheduler接收到Mesos發送的資源后,進行任務調度和匹配,匹配成功后,將匹配結構下發給Mesos Master,并由Mesos Master轉發給相應節點的執行器執行任務,
Resource Offer機制是指Mesos Master主動將節點空閑資源以類似發放的方式發給每個框架,如果框架需要則使用,不需要則回傳,
通過Resource Offer機制,第一層調度將資源主動告知第二層調度,然后第二層調度進行具體的任務分配,從而實作了任務調度與資源管理的分離,Mesos Master通過資源分配演算法決定給各個Framework提供多少資源,而Framework決定了接受哪些資源,以及哪些任務使用這些資源運行,
在調度中,常見的資源分配演算法包括:
- 最大最小公平演算法
- 主導資源公平演算法
最大最小公平演算法是一種在兼顧公平的前提上,盡可能讓更多滿意的資源分配演算法,這個演算法有3個主要原則:
- 按照用戶對資源資源需求量遞增的順序進行空閑資源分配,
- 不存在用戶得到的資源超過了自己需求的情況,
- 對于分配資源不滿足需求的用戶,所獲得的資源是相等的,
主導資源公平演算法在考慮絕對公平的前提下,還考慮了用戶對不同型別的需求,以可能得合理分配資源,即主導資源公平演算法可以盡可能的滿足更多用戶,
最大最小公平演算法適用于單一型別的資源分配場景,而主導資源公平演算法適用于多種型別的混合場景,并且最大最小演算法從公平的角度出發,為了每個用戶分配不多于與需求量的資源,而主導資源公平演算法從任務出發,目的在于充分盡量利用資源使得能夠執行的任務越多越好,
作者:李潘 出處:http://wing011203.cnblogs.com/ 本文著作權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利,轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/543856.html
標籤:Java
下一篇:day09-1-資料格式化
