日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Yarn調度器與調度算法

作者:雜亂無章的我 更新時間: 2022-07-30 編程語言

目錄

前言:

一? ?Yarn調度器

(1)先進先出調度器(FIFO)

(2)容量調度器(Capacity Scheduler)

(3)公平調度器(Fair Scheduler)

二? 公平調度器隊列資源分配方式與分配算法

(1)FIFO策略

(2)Fair策略

(3)DRF策略


前言:

????????YARN (Yet Another Resource Negotiator,另一種資源協調者)是一種Hadoop?資源管理器,它是一個通用資源管理系統,可為上層應用提供統一的資源管理和調度,它的引入為集群在利用率、資源統一管理和數據共享等方面帶來了巨大好處。本文將具體闡述Yarn調度器與其調度算法。

一? ?Yarn調度器

????????目前,Hadoop作業調度器主要有三種:FIFO、容量(Capacity Scheduler)和公平(Fair Scheduler)。Apache Hadoop3.1.3默認的資源調度器是Capacity Scheduler。

????????CDH框架默認調度器是Fair Scheduler

(1)先進先出調度器(FIFO)

????????FIFO調度器(First In First Out):單隊列,根據提交作業的先后順序,先來先服務。

FIFO調度器
優點 缺點
簡單易懂; 不支持多隊列,多并發;
實現簡單; 生產環境不建議使用;

(2)容量調度器(Capacity Scheduler)

????????Capacity Scheduler是Yahoo開發的多用戶調度器。

容量調度器優點:

1多隊列每個隊列可配置一定的資源量,每個隊列采用FIFO調度策略

2、容量保證:管理員可為每個隊列設置資源最低保證和資源使用上限

3、靈活性:如果一個隊列中的資源有剩余,可以暫時共享給那些需要資源的隊列,而一旦該隊列有新的應用程序提交,則其他隊列借調的資源會歸還給該隊列。

4、多用戶:

??????? 支持多用戶共享集群和多應用程序同時運行。

??????? 了防止同一個用戶的作業獨占隊列中的資源,該調度器會對同一用戶提交的作業所占資源量進行限定。

如下圖所示,該調度器首先將總體資源按照30%、30%、40%配比分給三個隊列,然后在隊列三中又有兩個用戶,又將隊列三中的資源按照50%、50%配比分給兩個用戶。

?Capacity Scheduler容量調度器在開發使用過程中使用較為頻繁。

容量調度器分配算法

? ? ? ? 容量調度器算法首先從root開始,使用深度優先算法,優先選擇資源占用率最低的隊列分配資源。然后按照提交作業的優先級和提交事件的順序分配資源(與FIFO資源調度器相同)。容器內部資源分配首先按照容器的優先級分配資源,當容器的優先級相同時,按照數據本地性原則考慮。

數據本地性原則
任務和數據在同一節點

任務和數據在同一機架

任務和數據也不再同一節點也不再同一機架

(3)公平調度器(Fair Scheduler)

????????Fair Schedulere是Facebook開發的多用戶調度器。

公平調度器與容量調度器的共同點有:

1多隊列每個隊列可配置一定的資源量,每個隊列采用FIFO調度策略

2、容量保證:管理員可為每個隊列設置資源最低保證和資源使用上限

3、靈活性:如果一個隊列中的資源有剩余,可以暫時共享給那些需要資源的隊列,而一旦該隊列有新的應用程序提交,則其他隊列借調的資源會歸還給該隊列。

4、多用戶:

??????? 支持多用戶共享集群和多應用程序同時運行。

??????? 了防止同一個用戶的作業獨占隊列中的資源,該調度器會對同一用戶提交的作業所占資源量進行限定。

公平調度器與容量調度器之間的不同點有:

(1)核心策略不同:容量調度器優先選擇資源利用率低的隊列。公平調度器優先選擇對資源的缺額比例大的隊列。

(2)每個隊列可以單獨設置資源分配方式:

容量調度器使用:FIFO、DRF 。? 公平調度器主要使用:FIFO、FAIR、DRF

?缺額:在時間尺度上,所有作業獲得公平的資源。在某一時刻一個作業應獲得資源和實際獲得資源的差距叫做缺額。

公平調度器會優先為缺額打的作業分配資源。

二? 公平調度器隊列資源分配方式與分配算法

(1)FIFO策略

當公平調度器采用FIFO策略進行資源分配時,那么其就等價于上面的容量調度器。

(2)Fair策略

? ? ? ? 2.1 隊列資源分配

????????Fair 策略(默認)是一種基于最大最小公平算法實現的資源多路復用方式,默認情況下,每個隊列內部采用該方式分配資源。這意味著,如果一個隊列中有兩個應用程序同時運行,則每個應用程序可得到1/2的資源;如果三個應用程序同時運行,則每個應用程序可得到1/3的資源。

如果有三個隊列,對資源的需要分別為20%,30%,50%。

如果采用公平調度器,調度器內部第一次計算會將資源等分為三份(33.3%)分給三個隊列。第二次計算會將多的資源值繼續等分。直至資源分配完畢。

? ? ? ? ?2.2 作業資源分配

? ? ? ? 不加權重(關注的是Job的個數)

有一條隊列總資源12, 4job,對資源的需求分別是: job1->1,? job2->2 , job3->6,? job4->5調度器會進行如下計算。

?第一次計算:? 12 / 4 = 3

??? job1: 3 --> 2

??? job2: 3 --> 1

??? job3: 3 --> 3

??? job4: 3 --> 2個

第二次計算: 3 / 2? = 1.5

??? job1: 1

??? job2: 2

??? job3: 3 --> 3 --> 1.5 --> 最終: 4.5

??? job4: 3 --> 2 --> 1.5 --> 最終: 4.5

n次計算: 一直算到沒有空閑資源

加權(關注點是Job的權重)

?有一條隊列總資源16,有4job 對資源的需求分別是:

job1->4?? job2->2? job3->10? job4->4

每個job的權重為:??

job1->5?? job2->8? job3->1?? job4->2 調度器會進行如下計算

?第一次計算: 16 / (5+8+1+2) =? 1

??? job1:? 5 --> 1

??? job2:? 8 --> 6

??? job3:? 1 --> 9

??? job4:? 2 --> 2????

第二次計算: 7 / (1+2) = 7/3

??? job1: 4

??? job2: 2

??? job3: 1 --> 7/32.33 -->6.67

??? job4: 2 --> 14/3(4.66) -->2.66

第三次計算:2.66/1=2.66

??? job1: 4

??? job2: 2

??? job3: 1 --> 2.66/1 --> 2.66

??? job4: 4

n次計算: 一直算到沒有空閑資源

加權與不加權的計算其實本質是相同的,只是不加權的每個job的權重都為1.?

(3)DRF策略

?? DRFDominant Resource Fairness),我們之前說的資源,都是單一標準,例如只考慮內存(也是Yarn默認的情況)。但是很多時候我們資源有很多種,例如內存,CPU,網絡帶寬等,這樣我們很難衡量兩個應用應該分配的資源比例。

那么在YARN中,我們用DRF來決定如何調度:

假設集群一共有100 CPU10T 內存,而應用A需要(2 CPU, 300GB),應用B需要(6 CPU100GB)。則兩個應用分別需要A2%CPU, 3%內存)和B6%CPU, 1%內存)的資源,這就意味著A是內存主導的, BCPU主導的,針對這種情況,我們可以選擇DRF策略對不同應用進行不同資源(CPU和內存)的一個不同比例的限制。

????????在生產使用過程中,由于FIFO調度器不支持多隊列多并發用戶的性質,導致在生產使用過程中,我們不使用FIFO調度器。主要選擇容量調度器與公平調度器。

原文鏈接:https://blog.csdn.net/m0_58258383/article/details/126051740

欄目分類
最近更新