系統(tǒng)下載、安裝、激活,就到系統(tǒng)天地來(lái)!

所在位置: 首頁(yè) — IT資訊 — 網(wǎng)絡(luò)

Schedulerx2.0支持應(yīng)用級(jí)別資源管理與任務(wù)優(yōu)先級(jí)

作者:系統(tǒng)天地 日期:2020-04-08

 1. 前言

Schedulerx2.0是一套分布式的任務(wù)調(diào)度+計(jì)算框架。作為一套分布式計(jì)算引擎,用戶(hù)經(jīng)常需要資源管理的需求,當(dāng)前schedulerx僅僅支持單個(gè)任務(wù)實(shí)例的管控(比如單機(jī)子任務(wù)并發(fā)數(shù)、拉模型全局子任務(wù)并發(fā)數(shù)等),這一點(diǎn)是遠(yuǎn)遠(yuǎn)不夠的。比如某一時(shí)刻大量任務(wù)要觸發(fā),用戶(hù)資源不夠,當(dāng)前是無(wú)法管控的。
 
業(yè)內(nèi)任務(wù)調(diào)度系統(tǒng)一般都focus在任務(wù)調(diào)度上,資源管理會(huì)借助第三方系統(tǒng)(比如mesos, yarn),這類(lèi)系統(tǒng)的執(zhí)行單元worker都是由調(diào)度平臺(tái)管控的。這一點(diǎn)和schedulerx還是不一樣的,schedulerx的計(jì)算worker都是各個(gè)用戶(hù)自己的應(yīng)用程序接入的,無(wú)法通過(guò)統(tǒng)一的第三方資源管理系統(tǒng)來(lái)管理。
 
2. 應(yīng)用級(jí)別資源管理
1) 新建應(yīng)用分組的時(shí)候,高級(jí)配置可以打開(kāi)流控開(kāi)關(guān)(默認(rèn)關(guān)閉)
 
1.png
 
打開(kāi)開(kāi)關(guān)后,可以配置應(yīng)用級(jí)別的任務(wù)隊(duì)列(即任務(wù)實(shí)例并發(fā)數(shù))。該隊(duì)列表示一個(gè)應(yīng)用最多同時(shí)運(yùn)行的任務(wù)實(shí)例個(gè)數(shù),超過(guò)并發(fā)數(shù)的任務(wù)實(shí)例不會(huì)丟棄,會(huì)放在隊(duì)列中等待執(zhí)行。
 
2) 在該分組下新建3個(gè)任務(wù),分別手動(dòng)運(yùn)行一次
 
2.png
 
3) 會(huì)發(fā)現(xiàn),第一個(gè)觸發(fā)的任務(wù)hello_jobA在運(yùn)行中,hello_jobB和hello_jobC在池子中排隊(duì)
 
3.png
 
4) 等hello_jobA運(yùn)行完,hello_jobB會(huì)進(jìn)入執(zhí)行隊(duì)列
 
4.png
 
3. 任務(wù)優(yōu)先級(jí)
任務(wù)支持優(yōu)先級(jí),同一個(gè)應(yīng)用下,調(diào)度時(shí)間一樣,優(yōu)先級(jí)高的任務(wù)優(yōu)先調(diào)度
 
5.png
 
用戶(hù)1:“我把自己的任務(wù)全部設(shè)置為非常高,是不是能保證自己的任務(wù)比其他用戶(hù)的任務(wù)優(yōu)先調(diào)度?”
 
回答:任務(wù)優(yōu)先級(jí)是應(yīng)用級(jí)別的,只會(huì)在該應(yīng)用下生效,不會(huì)影響其他應(yīng)用。
 
用戶(hù)2:“客戶(hù)端都有很多臺(tái)機(jī)器,高優(yōu)先任務(wù)和低優(yōu)先級(jí)任務(wù)分布式調(diào)度到不同的機(jī)器,也有可能低優(yōu)先任務(wù)先運(yùn)行啊,這個(gè)功能看起來(lái)貌似很雞肋?”
 
回答:別急,接著看下一節(jié)。
 
4. 可搶占的優(yōu)先級(jí)隊(duì)列
 
熟悉大數(shù)據(jù)的同學(xué),應(yīng)該對(duì)下面這個(gè)圖很熟悉。這個(gè)是yarn的優(yōu)先級(jí)隊(duì)列,對(duì)不同優(yōu)先級(jí)的任務(wù)做資源隔離
 
6.png
 
我們可以來(lái)看下,schedulerx如何通過(guò)應(yīng)用級(jí)別資源管理+任務(wù)優(yōu)先級(jí),來(lái)實(shí)現(xiàn)可搶占的任務(wù)優(yōu)先級(jí)隊(duì)列。
 
1) dts-all.hxm這個(gè)應(yīng)用開(kāi)啟限流,隊(duì)列大小=1方便觀察,新建3個(gè)優(yōu)先級(jí)任務(wù)如下圖。先觸發(fā)1次中優(yōu)先級(jí)任務(wù),再觸發(fā)1次低優(yōu)先級(jí)任務(wù),再觸發(fā)一次高優(yōu)先級(jí)任務(wù)
 
7.png
 
2) 因?yàn)橄扔|發(fā)中優(yōu)先級(jí)任務(wù)的時(shí)候,隊(duì)列還是空的,所以中優(yōu)先任務(wù)先跑
 
8.png
 
3) 中優(yōu)先級(jí)任務(wù)跑完之后,隊(duì)列有空閑槽位了,高優(yōu)先級(jí)任務(wù)會(huì)搶占低優(yōu)先級(jí)任務(wù)先執(zhí)行
 
9.png
 
5. 應(yīng)用場(chǎng)景
該功能上線后,應(yīng)用場(chǎng)景非常多,很多業(yè)務(wù)方都有應(yīng)用級(jí)別資源控制和任務(wù)優(yōu)先級(jí)的需求。比如數(shù)據(jù)平臺(tái)每天要跑報(bào)表,可能會(huì)有成千上萬(wàn)的任務(wù)在晚上跑,如果沒(méi)有資源控制,所有任務(wù)一起跑會(huì)把應(yīng)用打掛。然后要求kpi報(bào)表必須早上9點(diǎn)前產(chǎn)生(老板和運(yùn)營(yíng)上班要看),這就需要在資源控制的基礎(chǔ)上,高優(yōu)先級(jí)任務(wù)優(yōu)先調(diào)度,如果低優(yōu)先級(jí)任務(wù)先進(jìn)入隊(duì)列,高優(yōu)先任務(wù)也能搶占優(yōu)先調(diào)度。
 
6. 總結(jié)及未來(lái)展望
相比較yarn的資源管理來(lái)說(shuō),yarn能做到vcore, cpu, memory等資源級(jí)別的管控。Schedulerx作為通用的任務(wù)調(diào)度平臺(tái),在調(diào)度端實(shí)現(xiàn)對(duì)任務(wù)運(yùn)行實(shí)例個(gè)數(shù)和優(yōu)先級(jí)的管控。
 
當(dāng)前Schedulerx無(wú)法做到core, cpu, memory級(jí)別的資源管控,是因?yàn)楫?dāng)前接入方式,是應(yīng)用自己的worker接入,不是由調(diào)度平臺(tái)提供的機(jī)器。未來(lái)Schedulerx會(huì)和云原生結(jié)合,用戶(hù)接入只需要上傳jobProcessor的jar包,由調(diào)度平臺(tái)申請(qǐng)容器運(yùn)行,大大減少了接入的代價(jià),還能做到細(xì)粒度的資源管控,彈性擴(kuò)縮容等能力。
 
本文來(lái)源于系統(tǒng)天地,轉(zhuǎn)載請(qǐng)注明來(lái)源于出處。