在Yarn中有三種調(diào)度器可以選擇:FIFO Scheduler ,Capacity Scheduler拓哟,F(xiàn)airS cheduler佃迄。它們的區(qū)別如下:
1慰技、FIFO Scheduler
FIFO Scheduler把應(yīng)用按提交的順序排成一個(gè)隊(duì)列腾誉,這是一個(gè)先進(jìn)先出隊(duì)列,在進(jìn)行資源分配的時(shí)候峻呕,先給隊(duì)列中最頭上的應(yīng)用進(jìn)行分配資源利职,待最頭上的應(yīng)用需求滿足后再給下一個(gè)分配,以此類(lèi)推瘦癌。
FIFO Scheduler是最簡(jiǎn)單也是最容易理解的調(diào)度器猪贪,也不需要任何配置,但它并不適用于共享集群讯私。大的應(yīng)用可能會(huì)占用所有集群資源热押,這就導(dǎo)致其它應(yīng)用被阻塞西傀。在共享集群中,更適合采用Capacity Scheduler或Fair Scheduler桶癣,這兩個(gè)調(diào)度器都允許大任務(wù)和小任務(wù)在提交的同時(shí)獲得一定的系統(tǒng)資源拥褂。
從下圖可以看出,在FIFO 調(diào)度器中牙寞,小任務(wù)會(huì)被大任務(wù)阻塞饺鹃。
2、Capacity Scheduler
Capacity Schedule調(diào)度器以隊(duì)列為單位劃分資源间雀,隊(duì)列以分層方式組織資源,設(shè)計(jì)了多層級(jí)別的資源限制條件以更好的讓多用戶共享一個(gè)Hadoop集群悔详,比如隊(duì)列資源限制、用戶資源限制惹挟、用戶應(yīng)用程序數(shù)目限制茄螃。
隊(duì)列里的應(yīng)用以FIFO方式調(diào)度,每個(gè)隊(duì)列可設(shè)定一定比例的資源最低保證和使用上限连锯,同時(shí)归苍,每個(gè)用戶也可以設(shè)定一定的資源使用上限以防止資源濫用。而當(dāng)一個(gè)隊(duì)列的資源有剩余時(shí)萎庭,可暫時(shí)將剩余資源共享給其他隊(duì)列霜医。
3、Fair Scheduler
在Fair調(diào)度器中驳规,我們不需要預(yù)先占用一定的系統(tǒng)資源肴敛,F(xiàn)air調(diào)度器會(huì)為所有運(yùn)行的job動(dòng)態(tài)的調(diào)整系統(tǒng)資源。如下圖所示吗购,當(dāng)?shù)谝粋€(gè)大job提交時(shí)医男,只有這一個(gè)job在運(yùn)行,此時(shí)它獲得了所有集群資源捻勉;當(dāng)?shù)诙€(gè)小任務(wù)提交后镀梭,F(xiàn)air調(diào)度器會(huì)分配一半資源給這個(gè)小任務(wù),讓這兩個(gè)任務(wù)公平的共享集群資源踱启。
需要注意的是报账,在下圖Fair調(diào)度器中,從第二個(gè)任務(wù)提交到獲得資源會(huì)有一定的延遲埠偿,因?yàn)樗枰却谝粋€(gè)任務(wù)釋放占用的Container透罢。小任務(wù)執(zhí)行完成之后也會(huì)釋放自己占用的資源,大任務(wù)又獲得了全部的系統(tǒng)資源冠蒋。最終的效果就是Fair調(diào)度器即得到了高的資源利用率又能保證小任務(wù)及時(shí)完成羽圃。