公眾號文章匯總
903
2025-04-03
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的主要模塊如下:
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除了提高系統吞吐量和利用率,還提供了以下主要調度功能:
多資源池
多資源池有助于在邏輯上劃分集群資源并在多個租戶/隊列之間共享它們。資源池的劃分可以基于異構的資源或完全按照應用資源隔離的訴求來劃分。對于一個資源池,不同隊列可配置進一步的策略。
每個資源池多租戶調度(reserve、min、share、max)
Superior Scheduler提供了靈活的層級多租戶調度策略。并允許針對不同的資源池可以訪問的租戶/隊列,配置不同策略,如下所示。
策略名稱
描述
reserve
預留租戶資源。即使租戶沒有作業,其他租戶也不能使用該預留的資源。其值可以是百分比或絕對值。如果兩者都配置,調度系統動態計算轉換為資源絕對值,并取兩者的最大值。缺省的reserve值為0。相對于定義一個專用資源池并指定具體機器的方式,reserve的策略可以認為提供了一種靈活的浮動預留功能,由于并不限定具體的機器,可以提高計算的數據親和性,也不會受具體機器故障的影響。
min
具有搶占支持的最低保證資源。其他租戶可以使用這部分資源,但是本租戶享有優先使用權。其值可以是百分比或絕對值。如果兩者都配置,調度系統動態計算轉換為資源絕對值,并取兩者的最大值。缺省值是0。
share
不支持搶占的共享資源。本租戶要使用這部分資源時,需要等待其他租戶完成作業并釋放資源。其值是百分比或絕對值。
max
允許的最大資源數量。租戶無法獲得比允許的最大資源多的資源。其值是百分比或絕對值。如果兩者都配置,調度系統動態計算轉換為資源絕對值,并取兩者最大值。缺省值不受限制。
租戶資源分配策略示意圖如圖所示:
同開源的調度器相比,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開源調度器對比分析如下:
領域
YARN開源調度器
Superior Scheduler
多租戶調度
在同構集群上,只能選擇容量調度器(Capacity Scheduler)或公平調度器(Fair Scheduler)兩者之一,且集群當前不支持公平調度器(Fair Scheduler)。容量調度器只支持百分比方式配置,而公平調度器只支持絕對值方式。
支持異構集群和多資源池。
支持預留,以保證直接訪問資源。
數據位置感知調度
從節點到作業的調度策略導致降低數據本地話命中率,潛在影響應用的執行性能。
從作業到節點的調度策略。可具有更精確的數據位置感知,數據本地化調度的作業命中率比較高。
基于機器負載的均衡調度
不支持
Superior Scheduler在調度時考慮機器的負載和資源分配情況,做到均衡調度。
租戶內多用戶公平調度
不支持
租戶內用戶的公平調度,支持關鍵字default、others。
作業等待原因
不支持
作業等待原因信息可顯示為什么作業需等待。
EI企業智能 FusionInsight Hadoop MapReduce
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。