網站首頁 編程語言 正文
目錄
前言:
一? ?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):單隊列,根據提交作業的先后順序,先來先服務。
優點 | 缺點 |
簡單易懂; | 不支持多隊列,多并發; |
實現簡單; | 生產環境不建議使用; |
(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個, 有4個job,對資源的需求分別是: 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,有4個job 對資源的需求分別是:
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/3(2.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策略
?? DRF(Dominant Resource Fairness),我們之前說的資源,都是單一標準,例如只考慮內存(也是Yarn默認的情況)。但是很多時候我們資源有很多種,例如內存,CPU,網絡帶寬等,這樣我們很難衡量兩個應用應該分配的資源比例。
那么在YARN中,我們用DRF來決定如何調度:
假設集群一共有100 CPU和10T 內存,而應用A需要(2 CPU, 300GB),應用B需要(6 CPU,100GB)。則兩個應用分別需要A(2%CPU, 3%內存)和B(6%CPU, 1%內存)的資源,這就意味著A是內存主導的, B是CPU主導的,針對這種情況,我們可以選擇DRF策略對不同應用進行不同資源(CPU和內存)的一個不同比例的限制。
????????在生產使用過程中,由于FIFO調度器不支持多隊列多并發用戶的性質,導致在生產使用過程中,我們不使用FIFO調度器。主要選擇容量調度器與公平調度器。
原文鏈接:https://blog.csdn.net/m0_58258383/article/details/126051740
相關推薦
- 2022-12-09 Flask自定義序列化超詳細講解_python
- 2022-06-02 CKAD認證中部署k8s并配置Calico插件_云和虛擬化
- 2023-10-09 markdown和富文本編輯器的區別
- 2022-09-17 ASP.NET?Core項目中集成TypeScript_實用技巧
- 2022-07-30 沒有匹配的倉庫可以修改:PowerTools
- 2022-12-09 python中為main方法傳參問題_python
- 2022-07-14 Python萬物皆對象理解及源碼學習_python
- 2023-07-15 oracle查看死鎖以及處理死鎖
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支