簡介
Yarn是大數據集群中的分布式資源管理服務,大數據集群為Yarn分配資源,資源總量可配置。Yarn內部為任務隊列進一步分配和調度計算資源。對于Mapreduce、Spark、Flink和Hive的任務隊列,計算資源完全由Yarn來分配和調度。
Yarn任務隊列是計算資源分配的基本單位。
對于租戶,通過Yarn任務隊列申請到的資源是動態資源。用戶可以動態創建并修改任務隊列的配額,可以查看任務隊列的使用狀態和使用統計。
資源池
現代企業IT經常會面對紛繁復雜的集群環境和上層需求。例如以下業務場景:
- 集群異構,集群中各個節點的計算速度、存儲容量和網絡性能存在差異,需要把復雜應用的所有任務按照需求,合理地分配到各個計算節點上。
- 計算分離,多個部門需要數據共享,但是需要把計算完全分離在不同的計算節點上。
這就要求對計算資源的節點進一步分區。
資源池用來指定動態資源的配置。Yarn任務隊列和資源池關聯,可實現資源的分配和調度。
一個租戶只能設置一個默認資源池。用戶通過綁定租戶相關的角色,來使用該租戶資源池的資源。若需要使用多個資源池的資源,可通過綁定多個租戶相關的角色實現。
調度機制
Yarn動態資源支持標簽調度(Label Based Scheduling)策略,此策略通過為計算節點(Yarn NodeManager)創建標簽(Label),將具有相同標簽的計算節點添加到同一個資源池中,Yarn根據任務隊列對資源的需求,將任務隊列和有相應標簽的資源池動態關聯。
例如,集群中有40個以上的節點,根據各節點的硬件和網絡配置,分別用Normal、HighCPU、HighMEM、HighIO為四類節點創建標簽,添加到四個資源池中,資源池中的各節點性能如下表所示。
不同資源池中的各節點性能
| 標簽名 | 節點數 | 硬件和網絡配置 | 添加到 | 關聯 |
|---|---|---|---|---|
| Normal | 10 | 一般 | 資源池A | 普通的任務隊列 |
| HighCPU | 10 | 高性能CPU | 資源池B | 計算密集型的任務隊列 |
| HighMEM | 10 | 大量內存 | 資源池C | 內存密集型的任務隊列 |
| HighIO | 10 | 高性能網絡 | 資源池D | IO密集型的任務隊列 |
任務隊列只能使用所關聯的資源池里的計算節點。
-
普通的任務隊列關聯資源池A,使用硬件和網絡配置一般的Normal節點。
-
計算密集型的任務隊列關聯資源池B,使用具有高性能CPU的HighCPU節點。
-
內存密集型的任務隊列關聯資源池C,使用具有大量內存的HighMEM節點。
-
IO密集型的任務隊列關聯資源池D,使用具有高性能網絡的HighIO節點。
Yarn任務隊列與特定的資源池關聯,可以更有效地使用資源,保證節點性能充足且互不影響。
FusionInsight Manager中最多支持添加50個資源池。系統默認包含一個默認資源池。
調度器介紹
MRS集群默認即啟用了Superior調度器。
- Superior調度器為增強型,Superior取名源自蘇必利爾湖,意指由該調度器管理的數據足夠大。
為滿足企業需求,克服Yarn社區在調度上遇到的挑戰與困難,Superior調度器做了以下增強:
- 增強資源共享策略
Superior調度器支持隊列層級,在同集群集成開源調度器的特性,并基于可配置策略進一步共享資源。針對實例,管理員可通過Superior調度器為隊列同時配置絕對值或百分比的資源策略計劃。Superior調度器的資源共享策略將Yarn的標簽調度增強為資源池特性,Yarn集群中的節點可根據容量或業務類型不同,進行分組以使隊列更有效地利用資源。
- 基于租戶的資源預留策略
部分租戶可能在某些時間中運行關鍵任務,租戶所需的資源應保證可用。Superior調度器構建了支持資源預留策略的機制,在這些租戶隊列運行的任務可立即獲取到預留資源,以保證計劃的關鍵任務可正常執行。
- 租戶和資源池的用戶公平共享
Superior調度器提供了隊列內用戶間共享資源的配置能力。每個租戶中可能存在不同權重的用戶,高權重用戶可能需要更多共享資源。
- 大集群環境下的調度性能優勢
Superior調度器接收到各個NodeManager上報的心跳信息,并將資源信息保存在內存中,使得調度器能夠全局掌控集群的資源使用情況。Superior調度器采用了push調度模型,令調度更加精確、高效,大大提高了大集群下的資源使用率。另外,Superior調度器在NodeManager心跳間隔較大的情況下,調度性能依然優異,不犧牲調度性能,也能避免大集群環境下的“心跳風暴”。
- 優先策略
當某個服務在獲取所有可用資源后還無法滿足最小資源的要求,則會發生優先搶占。搶占功能默認關閉。