天天看點

Superior Scheduler:帶你了解FusionInsight MRS的超級排程器

摘要:Superior Scheduler是一個專門為Hadoop YARN分布式資源管理系統設計的排程引擎,是針對企業客戶融合資源池,多租戶的業務訴求而設計的高性能企業級排程器。

本文分享自華為雲社群《​​FusionInsight MRS的自研超級排程器Superior Scheduler原理簡介​​》,作者:一枚核桃。

Superior Scheduler是一個專門為Hadoop YARN分布式資源管理系統設計的排程引擎,是針對企業客戶融合資源池,多租戶的業務訴求而設計的高性能企業級排程器。

Superior Scheduler可實作開源排程器、Fair Scheduler以及Capacity Scheduler的所有功能。另外,相較于開源排程器,Superior Scheduler在企業級多租戶排程政策、租戶内多使用者資源隔離和共享、排程性能、系統資源使用率和支援大叢集擴充性方面都做了針對性的增強。設計的目标是讓Superior Scheduler直接替代開源排程器。

類似于開源Fair Scheduler和Capacity Scheduler,Superior Scheduler通過YARN排程器插件接口與YARN Resource Manager元件進行互動,以提供資源排程功能。下圖為其整體系統架構:

Superior Scheduler:帶你了解FusionInsight MRS的超級排程器

Superior Scheduler的主要子產品如下:

  • Superior Scheduler Engine:具有豐富排程政策的高性能排程器引擎。
  • Superior YARN Scheduler Plugin:YARN Resource Manager和Superior Scheduler Engine之間的橋梁,負責同YARN Resource Manager互動。

在排程原理上,開源的排程器都是基于計算節點心跳驅動的資源反向比對作業的排程機制。具體來講,每個計算節點定期發送心跳到YARN的Resource Manager通知該節點狀态并同時啟動排程器為這個節點配置設定作業。這種排程機制把排程的周期同心跳結合在一起,當叢集規模增大時,會遇到系統擴充性以及排程性能瓶頸。另外,因為采用了資源反向比對作業的排程機制,開源排程器在排程精度上也有局限性,例如資料親和性偏于随機,另外系統也無法支援基于負載的排程政策等。主要原因是排程器在選擇作業時,缺乏全局的資源視圖,很難做到最優選擇。

Superior Scheduler内部采用了不同的排程機制。Superior Scheduler的排程器引入了專門的排程線程,把排程同心跳剝離開,避免了系統心跳風暴問題。另外,Superior Scheduler排程流程采用了從作業到資源的正向比對方法,這樣每個排程的作業都有全局的資源視圖,可以很大的提到排程的精度。相比開源排程器,Superior Scheduler在系統吞吐量、使用率、資料親和性等方面都有很大提升。

Superior Scheduler性能對比

Superior Scheduler:帶你了解FusionInsight MRS的超級排程器

Superior Scheduler除了提高系統吞吐量和使用率,還提供了以下主要排程功能:

  • 多資源池

多資源池有助于在邏輯上劃分叢集資源并在多個租戶/隊列之間共享它們。資源池的劃分可以基于異構的資源或完全按照應用資源隔離的訴求來劃分。對于一個資源池,不同隊列可配置進一步的政策。

  • 每個資源池多租戶排程(reserve、min、share、max)

Superior Scheduler提供了靈活的層級多租戶排程政策。并允許針對不同的資源池可以通路的租戶/隊列,配置不同政策,如下所示。

Superior Scheduler:帶你了解FusionInsight MRS的超級排程器

租戶資源配置設定政策示意圖如圖所示:

Superior Scheduler:帶你了解FusionInsight MRS的超級排程器

同開源的排程器相比,Superior Scheduler同時提供了租戶級百分比和絕對值的混配政策,可以很好的适應各種靈活的企業級租戶資源排程訴求。例如,使用者可以在一級租戶提供最大絕對值的資源保障,這樣租戶的資源不會因為叢集的規模改變而受影響。但在下層的子租戶之間,可以提供百分比的配置設定政策,這樣可以盡可能提升一級租戶内的資源使用率。

  • 異構和多元資源排程

Superior Scheduler支援CPU和記憶體資源的排程外,還支援擴充支援以下功能:

  • 節點标簽可用于識别像GPU_ENABLED,SSD_ENBALED等節點的多元屬性,可以根據這些标簽進行排程。
  • 資源池可用于對同一類别的資源進行分組并配置設定給特定的租戶/隊列。
  • 租戶内多使用者公平排程

在葉子租戶裡,多個使用者可以使用相同的隊列來送出作業。相比開源排程器,Superior Scheduler可以支援在同一租戶内靈活配置不同使用者的資源共享政策。例如可以為VIP使用者配置更多的資源通路權重。

  • 資料位置感覺排程

Superior Scheduler采用“從作業到節點的排程政策”,即嘗試在可用節點之間排程給定的作業,使得所選節點适合于給定作業。通過這樣做,排程器将具有叢集和資料的整體視圖。如果有機會使任務更接近資料,則保證了本地化。而開源排程器采用“從節點到作業的排程政策”,在給定節點中嘗試比對适當的作業。

  • Container排程時動态資源預留

在異構和多樣化的計算環境中,一些container需要更多的資源或多種資源,例如Spark作業可能需要更大的記憶體。當這些container與其他需要較小資源的container競争時,可能沒有機會在合理的時間内獲得所需的資源而處于饑餓狀态。由于開源的排程器是基于資源反向比對作業的排程方式,會為這些作業盲目的進行資源預留以防進入饑餓狀态。這就導緻了系統資源的整體浪費。Superior Scheduler與開源特性的不同之處在于:

  • 基于需求的比對:由于Superior Scheduler采用“從作業到節點的排程”,能夠選擇合适的節點來預留資源提升這些特殊container的啟動時間,并避免浪費。
  • 租戶重新平衡:啟用預留邏輯時,開源排程器并不遵循配置的共享政策。Superior Scheduler采取不同的方法。在每個排程周期中,Superior Scheduler将周遊租戶,并嘗試基于多租戶政策重新達到平衡,且嘗試滿足所有政策(reserve,min,share等),以便可以釋放預留的資源,将可用資源流向不同租戶下的其他本應得到資源的container。
  • 動态隊列狀态控制(Open/Closed/Active/Inactive)

支援多個隊列狀态,有助于管理者操作和維護多個租戶。

  • Open狀态(Open/Closed):如果是Open(預設)狀态,将接受送出到此隊列的應用程式,如果是Closed狀态,則不接受任何應用程式。
  • Active狀态(Active/Inactive):如果處于Active(預設)狀态,租戶内的應用程式是可以被排程和配置設定資源。如果處于Inactive狀态則不會進行排程。
  • 應用等待原因

如果應用程式尚未啟動,則提供作業等待原因資訊。

Superior Scheduler和YARN開源排程器對比分析如下:

繼續閱讀