自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

大數(shù)據(jù)架構(gòu)師一定要弄清楚Fair Scheduler和Capacity Scheduler

大數(shù)據(jù) 數(shù)據(jù)分析
如果是中小型集群,上千節(jié)點(diǎn)以內(nèi),資源比較緊張,建議使用Fair Scheduler,配置簡(jiǎn)單,對(duì)資源的使用效率也高。相比Fair Scheduler更加靈活,允許作業(yè)使用群集中未使用的資源。它通過(guò)基于定義的權(quán)重來(lái)給任務(wù)的公平搶占和穩(wěn)定提供保證。對(duì)于中小型集群,這是一個(gè)很好的默認(rèn)設(shè)置。

1.項(xiàng)目背景

公司集群上千物理節(jié)點(diǎn),存儲(chǔ)容量100PB+,當(dāng)前使用50PB左右,YARN的計(jì)算內(nèi)存150Tb+,CPU 30000 Cores+。當(dāng)前使用的CDH集群,因?yàn)樾阅芷款i,需要遷移到自建的apache Hadoop3集群。CDH集群默認(rèn)的是Fair Scheduler,Ambari(Hortonwork)默認(rèn)使用Capacity Scheduler。CDH和HDP合并后,新的CDP會(huì)默認(rèn)使用Capacity Scheduler調(diào)度器。所以如果需要將CDH群集遷移到CDP時(shí),必須從Fair Scheduler遷移到Capacity Scheduler。遷移過(guò)程包括在遷移之前自動(dòng)將某些Fair Scheduler配置轉(zhuǎn)換為Capacity Scheduler配置,并在遷移之后進(jìn)行手動(dòng)微微調(diào)。

目前Hadoop3.x默認(rèn)使用的是Capacity Scheduler,并且Capacity Scheduler支持了Node Labels機(jī)制,即通過(guò)給節(jié)點(diǎn)打標(biāo)簽的形式,讓不同隊(duì)列使用不同的標(biāo)簽節(jié)點(diǎn)進(jìn)而更好地做計(jì)算資源隔離和資源保障。目前大公司來(lái)說(shuō)使用Capacity Scheduler和Fair Scheduler的公司都有很多。至于FIFO調(diào)度器在生產(chǎn)上的使用幾乎可以忽略不計(jì)。對(duì)于一家公司,中型集群規(guī)模的話,到底是選擇Capacity Scheduler還是Fair Scheduler呢?從配置使用友好度,日常管理,生產(chǎn)上資源分配,拓展,實(shí)際使用經(jīng)驗(yàn)等多個(gè)維度去考核對(duì)比一下兩者的聯(lián)系

2.Fair Scheduler和Capacity Scheduler的調(diào)研

現(xiàn)在隨著hadoop3的更新,F(xiàn)air Scheduler和Capacity Scheduler的功能性越來(lái)越同質(zhì)化,相近。但是兩者的之所以沒(méi)有合并或者湮沒(méi)一家,是因?yàn)楸举|(zhì)上還是不同,都有一些自己的特質(zhì)與特定的功能,在不同方向發(fā)揮著自己的余熱。下面基于其重要的特性做了一些對(duì)比。

編號(hào)

比較類別

Fair Scheduler

Capacity Scheduler

1

是否支持多租戶的使用

支持

支持

2

是否支持多隊(duì)列的資源管理,支持隊(duì)列的樹(shù)狀結(jié)構(gòu)以及子隊(duì)列

支持

都可以配置多個(gè)父隊(duì)列,每個(gè)父隊(duì)列下多個(gè)子隊(duì)列

同一個(gè)父隊(duì)列下的子隊(duì)列資源分配值加起來(lái)可以不等于父隊(duì)列,這樣有利于提高父隊(duì)列的資源利用率。但是實(shí)際使用最大小值會(huì)受父類的限制。

支持

都可以配置多個(gè)父隊(duì)列,每個(gè)父隊(duì)列下多個(gè)子隊(duì)列

同一個(gè)父隊(duì)列下的同一級(jí)別的子隊(duì)列Capacity之和必須為100,比較麻煩。

3

支持隊(duì)列的最小資源保障

支持

可以配置隊(duì)列的最小資源,舊的格式支持固定值,新的配置格式支持百分比;vcores = X,memory-mb = Y”或“ vcores = X%,memory-mb = Y%。

同一級(jí)別的容量之和加起來(lái)可以超過(guò)100%

分配文件必須為XML格式

<<queue name =“ root”>
<minResources> 10000 mb,0vcores </ minResources>
<maxResources> 90000 mb,0vcores </ maxResources>
<maxRunningApps> 50 </ maxRunningApps>
<maxAMShare> 0.1 </ maxAMShare>
<weight> 2.0 </ weight></span>

支持,

默認(rèn)配置百分比值或者小數(shù)

同一級(jí)別隊(duì)列的容量總和必須100或者100%

比如30,表示占父隊(duì)列的資源總和的30%。

尖叫提示:

不管是Fair Scheduler和Capacity Scheduler,如果當(dāng)前隊(duì)列沒(méi)有任務(wù)提交時(shí),是不會(huì)分配最小資源的,這個(gè)時(shí)候不保障最小資源,都是0。

如果該隊(duì)列有任務(wù)提交時(shí),需要等待當(dāng)前集群釋放資源時(shí),才會(huì)分配滿足最小資源的保證。也就說(shuō)只有有任務(wù)跑時(shí)才會(huì)滿足最小資源。

注意:當(dāng)一個(gè)隊(duì)列多個(gè)用戶提交使用時(shí),只保證整個(gè)隊(duì)列的最小資源使用,不保證每個(gè)用戶是否能有最小資源保證

默認(rèn)資源分配都是以內(nèi)存為調(diào)度單位的,但都支持CPU+內(nèi)存

4

支持隊(duì)列的最大資源限制

支持

配置格式同上,最小資源保障的配置。

尖叫提示:不管是Fair Scheduler和Capacity Scheduler隊(duì)列的最大資源限制是隊(duì)列可以使用的資源最大值,無(wú)論如何都不會(huì)超過(guò)這個(gè)值。

同樣,如果父隊(duì)列有最大值的限制,則子隊(duì)列使用的資源總和不會(huì)超過(guò)父隊(duì)列的最大值。也說(shuō)明了每個(gè)用戶的最大資源使用是有限制的。

支持,

默認(rèn)配置百分比值或者小數(shù)

同一級(jí)別隊(duì)列的容量總和必須100或者100%

比如30,表示占父隊(duì)列的資源總和的30%。

5

隊(duì)列之間資源共享與搶占

支持

當(dāng)集群中有隊(duì)列資源空閑時(shí),其他供其他隊(duì)列搶占使用,這是FS的重要特質(zhì)

支持

當(dāng)集群中有隊(duì)列資源空閑時(shí),其他供其他隊(duì)列搶占使用,CP的搶占管理更加精細(xì)化,相比配置也更加麻煩。

6

支持隊(duì)列內(nèi)為不同隊(duì)列配置不同的調(diào)度策略

支持

默認(rèn)是基于內(nèi)存的Fair share,也支持FIFO,以及多資源調(diào)度策略

不支持

7

支持限制隊(duì)列內(nèi)某個(gè)用戶的最大資源使用量

不支持

尖叫提示:

Capacity Scheduler支持限制隊(duì)列中每個(gè)用戶可以使用多少資源。這樣可以避免一個(gè)用戶接管集群中的所有資源。

支持

可以通過(guò)配置參數(shù),限制單個(gè)用戶使用隊(duì)列最大資源的百分比,防止單個(gè)用戶獨(dú)占整個(gè)隊(duì)列資源

8

支持負(fù)載均衡機(jī)制

支持

Fair Schedule的負(fù)載均衡機(jī)制會(huì)將集群中的任務(wù)盡可能的分配到各個(gè)節(jié)點(diǎn)上

不支持

9

資源分配策略

FAIR,FIFO或者DRF

FIFO或者DRF,默認(rèn)FIFO

10

支持任務(wù)搶占調(diào)度

支持

FS的搶占比較簡(jiǎn)單,直接計(jì)算權(quán)重比,所以可以任意配置整數(shù)權(quán)重值。

支持

11

隊(duì)列的ACL權(quán)限控制

支持

支持
尖叫提示:均可以設(shè)置隊(duì)列的使用提交人員ACL,但一個(gè)用戶可以配置使用多個(gè)隊(duì)列

12

限制隊(duì)列或集群的最大并發(fā)Appplication的個(gè)數(shù)

支持

支持

yarn.scheduler.capacity.root.yarn_mobdi_prd.maximum-applications

尖叫提示:區(qū)別是Fair Scheduler調(diào)度,超出最大并發(fā)數(shù)比如40后,其他任務(wù)處理等待狀態(tài);而Capacity Scheduler超出后任務(wù)直,拒絕申請(qǐng),拋出異常超出最大application的限制

13

限制基于用戶的最大并發(fā)Appplication的個(gè)數(shù)

支持

不支持

14

限制AppMaster在隊(duì)列/集群中最大資源使用

支持

支持

尖叫提示:這個(gè)限制的好處是防止集群中運(yùn)行了很多APPMaster,也就是初始化了很多任務(wù),因?yàn)楸举|(zhì)上APPMaster就是一個(gè)container。進(jìn)而沒(méi)有資源給真正的計(jì)算任務(wù)運(yùn)行,造成大量任務(wù)處于饑餓狀態(tài)。

15

是否支持動(dòng)態(tài)刷新配置文件

支持

支持

尖叫提示:刷新資源配置文件后,如增加隊(duì)列,調(diào)整資源分配,比重,無(wú)需重啟,一般10s后自動(dòng)加載生效

16

是否支持Node Label

不支持

支持

尖叫提示:Node Label節(jié)點(diǎn)分區(qū)是一種基于硬件/用途將大型群集劃分為幾個(gè)較小的群集的方法。容量和ACL可以添加到分區(qū)。

17

是否支持動(dòng)態(tài)調(diào)整container的大小

不支持
內(nèi)存或者cpu不夠的話,任務(wù)會(huì)被殺死

支持

yarn.resourcemanager.auto-update.containers默認(rèn)值是false,應(yīng)用程序可以根據(jù)工作負(fù)載的變化來(lái)更新其正在運(yùn)行的容器的大小。不會(huì)殺死任務(wù)。

尖叫提示:敲黑板!單個(gè)container使用的最大資源不會(huì)超過(guò)機(jī)器分配NM的最大值

18

規(guī)整化因子,很重要

支持,F(xiàn)S內(nèi)置了資源規(guī)整化算法,它規(guī)定了最小可申請(qǐng)資源量、最大可申請(qǐng)資源量和資源規(guī)整化因子,如果應(yīng)用程序申請(qǐng)的資源量小于最小可申請(qǐng)資源量,則YARN會(huì)將其大小改為最小可申請(qǐng)量;如果應(yīng)用程序申請(qǐng)的資源量大于最大可申請(qǐng)資源量,則會(huì)拋出異常,無(wú)法申請(qǐng)成功;yarn.scheduler.increment-allocation-mb和yarn.scheduler.increment-allocation-vcores

比如:YARN的container最小資源內(nèi)存量為3G,規(guī)整因子是512Mb,如果一個(gè)應(yīng)用程序申請(qǐng)3.2G內(nèi)存,則會(huì)得到3.5內(nèi)存。

不支持,

動(dòng)態(tài)規(guī)劃因子。比如:YARN的container最小資源內(nèi)存量為3G,規(guī)整因子是512Mb,如果一個(gè)應(yīng)用程序申請(qǐng)3.5G內(nèi)存,則會(huì)得到6G內(nèi)存。Fair Scheduler的資源增加是最小資源的整數(shù)倍。相比FS更加可以提高資源的利用率。

19

配置方式

Fair Scheduler使用嵌套的xml配置來(lái)模仿隊(duì)列的層次結(jié)構(gòu),比傳統(tǒng)的Hadoop風(fēng)格的配置更加直觀

通過(guò).的形式配置a.b.c

尖叫提示:相比后者,F(xiàn)air Scheduler使用的配置更加方便,直觀,好吧就是簡(jiǎn)單。

20

數(shù)據(jù)局部特性

支持

數(shù)據(jù)本地計(jì)算策略的百分比

yarn.scheduler.fair.locality.threshold.node

yarn.scheduler.fair.locality.threshold.rack

默認(rèn)值是-1,0表示不放棄任何調(diào)度機(jī)會(huì)。正常值配置在0-1之間。

支持

Capacity Scheduler利用“延遲調(diào)度”來(lái)遵守任務(wù)局部性約束。有3個(gè)級(jí)別的位置限制:節(jié)點(diǎn)本地,機(jī)架本地和關(guān)閉交換機(jī)。當(dāng)無(wú)法滿足地點(diǎn)要求時(shí),調(diào)度程序會(huì)計(jì)算錯(cuò)過(guò)的機(jī)會(huì)的數(shù)量,并等待此計(jì)數(shù)達(dá)到閾值,然后再將地點(diǎn)約束放寬到下一個(gè)級(jí)別

尖叫提示:這個(gè)對(duì)于任務(wù)本地化的控制有用,尤其對(duì)于帶寬緊張的集群。

3.最后的最后

3.1 Fair Scheduler

  • Fair Scheduler是資源池概念,大家共享這個(gè)池子里面的資源。
  • 多隊(duì)列多租戶使用時(shí),可以根據(jù)業(yè)務(wù)線,部門,隊(duì)列的實(shí)際使用情況,根據(jù)每個(gè)隊(duì)列的日均最小使用資源給隊(duì)列配置一個(gè)min resource,保證這個(gè)隊(duì)列的任務(wù)可以滿足最低運(yùn)行需求。同時(shí)為了防止單個(gè)隊(duì)列過(guò)多占用集群的資源,可以通過(guò)設(shè)置max resource限制隊(duì)列使用資源上線。但是max resource謹(jǐn)慎使用,設(shè)置不合理可能降低集群的資源使用率。
  • 在滿足了不同隊(duì)列最小使用資源的保障后,再根據(jù)實(shí)際應(yīng)用場(chǎng)景,給不同的隊(duì)列配置不同的權(quán)重,最后FS會(huì)根據(jù)權(quán)重來(lái)為各個(gè)對(duì)列的資源池(各個(gè)對(duì)列還有子隊(duì)列)分配資源(這種搶占的按照權(quán)重分配的方式本質(zhì)和capacity 分配一樣)。權(quán)重的設(shè)置相對(duì)capacitye很靈活,想增加權(quán)重直接修改權(quán)重整數(shù)值即可,F(xiàn)S會(huì)將各個(gè)對(duì)列的權(quán)重值求和。用當(dāng)前隊(duì)列權(quán)重值/總和的形式分配資源,其實(shí)也就是按所占的百分比分配資源。這種方式有利于動(dòng)態(tài)調(diào)整資源池的使用。同一級(jí)別的隊(duì)列可以設(shè)置權(quán)重進(jìn)行資源分配搶占。同一個(gè)父隊(duì)列的子隊(duì)列之間的資源也可以通過(guò)配置權(quán)重來(lái)進(jìn)行資源分配搶占,注意子隊(duì)列只搶占父隊(duì)列的資源。
  • 如下,隊(duì)列的生產(chǎn)配置情況??梢酝ㄟ^(guò)權(quán)重,限制并發(fā),最小資源,最大資源,調(diào)度策略等方式保證隊(duì)列任務(wù)的穩(wěn)定調(diào)度。

  • 可以結(jié)合公司實(shí)際不同部門的資源使用情況,比如A部門主要晚上用,B部門主要夜里用,配置早晚兩套或者N套資源隊(duì)列分配配置文件,通過(guò)調(diào)度自動(dòng)更新配置文件,yarn會(huì)每隔10s去更新讀取一次配置文件,這樣在無(wú)感知的情況下更加有利于調(diào)高集群的吞吐率。

3.2 Capacity Scheduler

  • 相比Capacity Scheduler 是一個(gè)隊(duì)列概念,新增一個(gè)任務(wù),如果發(fā)現(xiàn)資源不夠了,則根據(jù)FIFO規(guī)則排隊(duì);什么時(shí)候資源夠了,再用。
  • Fair Scheduler可以配置自動(dòng)創(chuàng)建pool,但是Capacity則無(wú)法創(chuàng)建隊(duì)列;其實(shí)本質(zhì)差別就是在于一個(gè)是pool共享資源的概念。對(duì)于FS而言,可以使用資源池中未被使用的資源,但是Capacity則不允許;所以前者比較靈活,后者相對(duì)呆滯。

3.3 建議

如果是中小型集群,上千節(jié)點(diǎn)以內(nèi),資源比較緊張,建議使用Fair Scheduler,配置簡(jiǎn)單,對(duì)資源的使用效率也高。相比Fair Scheduler更加靈活,允許作業(yè)使用群集中未使用的資源。它通過(guò)基于定義的權(quán)重來(lái)給任務(wù)的公平搶占和穩(wěn)定提供保證。對(duì)于中小型集群,這是一個(gè)很好的默認(rèn)設(shè)置。

容量調(diào)度程序?qū)τ谫Y源的管理更加細(xì)化,配置起來(lái)也是調(diào)度器中最麻煩的。其使用資源配額定義隊(duì)列。作業(yè)不能消耗額外的資源。這需要更多的配置和不斷的試錯(cuò),調(diào)整容量規(guī)劃。所以它更加適合不同工作負(fù)載且具有不同需求的大型集群。比如大幾千,上萬(wàn),類似阿里巴巴那樣的集群。

參考資料:

https://docs.cloudera.com/cdp/latest/data-migration/topics/cdp-data-migration-yarn-scheduler-migration.html

Apache Hadoop 3.3.4 – YARN Node Labels

??https://www.quora.com/Apache-Hadoop-Whats-the-difference-between-Fair-Scheduler-and-Capacity-Scheduler??

本文轉(zhuǎn)載自微信公眾號(hào)「滌生大數(shù)據(jù)」,作者「滌生大數(shù)據(jù)」,可以通過(guò)以下二維碼關(guān)注。

轉(zhuǎn)載本文請(qǐng)聯(lián)系「滌生大數(shù)據(jù)」公眾號(hào)。

責(zé)任編輯:武曉燕 來(lái)源: 今日頭條
相關(guān)推薦

2022-04-07 08:37:05

鏈表技巧單鏈表

2021-03-16 15:49:30

架構(gòu)運(yùn)維技術(shù)

2012-05-28 10:06:05

項(xiàng)目開(kāi)發(fā)項(xiàng)目管理開(kāi)發(fā)

2022-05-30 08:05:11

架構(gòu)

2022-03-11 07:59:09

容器代碼元素

2014-01-07 17:18:51

HadoopYARN

2014-01-07 16:34:36

HadoopYARN

2017-03-31 15:30:09

2024-01-12 08:26:16

Linux磁盤文件系統(tǒng)

2018-10-25 09:26:07

VLANVXLAN網(wǎng)絡(luò)

2020-02-18 16:48:48

大腦CPU包裝

2021-03-29 22:58:34

大數(shù)據(jù)Java編程語(yǔ)言

2022-02-18 12:24:39

PythonNumpy Arra大數(shù)據(jù)

2017-10-28 23:00:52

多云混合云云計(jì)算

2021-03-11 15:49:44

人工智能深度學(xué)習(xí)

2021-05-09 22:26:36

Python函數(shù)變量

2021-03-19 14:12:24

2020-05-07 10:57:51

物聯(lián)網(wǎng)

2023-11-29 09:29:48

Kuberneteskube

2017-06-07 14:10:58

企業(yè)云計(jì)算云端
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)