全部課程
發(fā)布時(shí)間: 2019-08-25 14:37:47
容量調(diào)度器的介紹
容量調(diào)度器使得Hadoop應(yīng)用能夠共享的、多用戶的、操作簡(jiǎn)便的運(yùn)行在集群上,同時(shí)較大化集群的吞吐量和利用率。
容量調(diào)度器以隊(duì)列為單位劃分資源,每個(gè)隊(duì)列都有資源使用的下限和上限。每個(gè)用戶可以設(shè)定資源使用上限。管理員可以約束單個(gè)隊(duì)列、用戶或作業(yè)的資源使用。支持作業(yè)優(yōu)先級(jí),但不支持資源搶占。
容量調(diào)度器的特點(diǎn)
容量保證:管理員可為每個(gè)隊(duì)列設(shè)置資源最低保證和資源使用上限,所有提交到該隊(duì)列的應(yīng)用程序共享這些資源。
靈活性:如果一個(gè)隊(duì)列中的資源有剩余,可以暫時(shí)共享給那些需要資源的隊(duì)列,當(dāng)該隊(duì)列有新的應(yīng)用程序提交,則其他隊(duì)列釋放的資源會(huì)歸還給該隊(duì)列。
支持優(yōu)先級(jí):隊(duì)列支持任務(wù)優(yōu)先級(jí)調(diào)度(默認(rèn)是FIFO)。
多重租賃:支持多用戶共享集群和多應(yīng)用程序同時(shí)運(yùn)行。為防止單個(gè)應(yīng)用程序、用戶或者隊(duì)列獨(dú)占集群資源,管理員可為之增加多重約束。
動(dòng)態(tài)更新配置文件:管理員可根據(jù)需要?jiǎng)討B(tài)修改配置參數(shù),以實(shí)現(xiàn)在線集群管理。
容量調(diào)度器的任務(wù)選擇
調(diào)度時(shí),首先按以下策略選擇一個(gè)合適隊(duì)列:
資源利用量最低的隊(duì)列優(yōu)先,比如同級(jí)的兩個(gè)隊(duì)列Q1和Q2,它們的容量均為30,而Q1已使用10,Q2已使用12,則會(huì)優(yōu)先將資源分配給Q1。
最小隊(duì)列層級(jí)優(yōu)先,例如:QueueA與QueueB.childQueueB,則QueueA優(yōu)先。
資源回收請(qǐng)求隊(duì)列優(yōu)先。
然后按以下策略選擇該隊(duì)列中一個(gè)任務(wù):
按照任務(wù)優(yōu)先級(jí)和提交時(shí)間順序選擇,同時(shí)考慮用戶資源量限制和內(nèi)存限制。
隊(duì)列的創(chuàng)建是在多租戶頁面,當(dāng)創(chuàng)建一個(gè)租戶關(guān)聯(lián)YARN服務(wù)時(shí),會(huì)創(chuàng)建同名的隊(duì)列。比如先創(chuàng)建QueueA,QueueB兩個(gè)租戶,即對(duì)應(yīng)YARN兩個(gè)隊(duì)列。
隊(duì)列的資源容量(百分比),有default、QueueA、QueueB三個(gè)隊(duì)列,每個(gè)隊(duì)列都有一個(gè)[隊(duì)列名].capacity配置:
Default隊(duì)列容量為整個(gè)集群資源的20%。
QueueA隊(duì)列容量為整個(gè)集群資源的10%。
QueueB隊(duì)列容量為整個(gè)集群資源的10%,后臺(tái)有一個(gè)影子隊(duì)列root-default使隊(duì)列之和達(dá)到100% 。
共享空閑資源
由于存在資源共享,因此一個(gè)隊(duì)列使用的資源可能超過其容量(例如QueueA.capacity),而較大資源使用量可通過參數(shù)限制。
如果某個(gè)隊(duì)列任務(wù)較少,可將剩余資源共享給其他隊(duì)列,例如QueueA的maximum-capacity配置為100,假設(shè)當(dāng)前只有QueueA在運(yùn)行任務(wù),理論上QueueA可以占用整個(gè)集群100%的資源。
用戶限制
每個(gè)用戶最低資源保障(百分比):
任何時(shí)刻,一個(gè)隊(duì)列中每個(gè)用戶可使用的資源量均有一定的限制,當(dāng)一個(gè)隊(duì)列中同時(shí)運(yùn)行多個(gè)用戶的任務(wù)時(shí),每個(gè)用戶的可使用資源量在一個(gè)最小值與較大值之間浮動(dòng),其中,較大值取決于正在運(yùn)行的任務(wù)數(shù)目,而最小值則由minimum-user-limit-percent決定。
例如,設(shè)置隊(duì)列A的這個(gè)值為25,即Yarn.scheduler.capacity.root.QueueA.minimum-user-limit-percent=25,那么隨著提任務(wù)的用戶增加,隊(duì)列資源的調(diào)整如下:

?
每個(gè)用戶最多可使用的資源量(所在隊(duì)列容量的倍數(shù)):
queue容量的倍數(shù),用來設(shè)置一個(gè)user可以獲取更多的資源。 Yarn.scheduler.capacity.root.QueueD.user-limit-factor=1。默認(rèn)值為1,表示一個(gè)user獲取的資源容量不能超過queue配置的capacity,無論集群有多少空閑資源,最多不超過maximum-capacity。
較大活躍任務(wù)數(shù):
整個(gè)集群中允許的較大活躍任務(wù)數(shù),包括運(yùn)行或掛起狀態(tài)的所有任務(wù),當(dāng)提交的任務(wù)申請(qǐng)數(shù)據(jù)達(dá)到限制以后,新提交的任務(wù)將會(huì)被拒絕。默認(rèn)值10000。
每個(gè)隊(duì)列較大任務(wù)數(shù):
對(duì)于每個(gè)隊(duì)列,可以提交的較大任務(wù)數(shù),以QueueA為例,可以在隊(duì)列配置頁面配置,默認(rèn)是1000,即此隊(duì)列允許最多1000個(gè)活躍任務(wù)。
每個(gè)用戶可以提交的較大任務(wù)數(shù):
這個(gè)數(shù)值依賴每個(gè)隊(duì)列較大任務(wù)數(shù)。根據(jù)上面的數(shù)據(jù), QueueA最多可以提交1000個(gè)任務(wù),那么對(duì)于每個(gè)用戶而言,可以向QueueA提交的較大任務(wù)數(shù)為1000* 用戶最低資源保障率(假設(shè)25%)* 用戶可使用隊(duì)列資源的倍數(shù)(假設(shè)1)。
上一篇: 人工智能AI培訓(xùn)_中文文本分詞