本發(fā)明涉及并行計(jì)算技術(shù)領(lǐng)域,特別是指一種去中心化資源調(diào)度方法及系統(tǒng)。
背景技術(shù):
當(dāng)前已經(jīng)進(jìn)入了大數(shù)據(jù)時(shí)代,大數(shù)據(jù)不光帶來了信息產(chǎn)業(yè)的創(chuàng)新,還推動(dòng)了傳統(tǒng)產(chǎn)業(yè)自我價(jià)值的重新定位。
目前的大數(shù)據(jù)計(jì)算,主要有yarn,spark,storm等。這些計(jì)算框架大部分都是主從結(jié)構(gòu)。為了解決單點(diǎn)故障問題,會(huì)啟動(dòng)一個(gè)備資源調(diào)度節(jié)點(diǎn)以便主資源調(diào)度節(jié)點(diǎn)發(fā)生故障時(shí)能接管服務(wù)。但目前的架構(gòu)中,同一時(shí)間,主備資源調(diào)度節(jié)點(diǎn)只有一個(gè)能正常提供服務(wù)。這樣一來就會(huì)存在一個(gè)問題:當(dāng)大量的作業(yè)需要在計(jì)算框架中并發(fā)運(yùn)行時(shí),資源調(diào)度節(jié)點(diǎn)面臨的沖擊將會(huì)很大,很可能出現(xiàn)內(nèi)存溢出,作業(yè)資源調(diào)度異常等各種問題。
從大數(shù)據(jù)平臺的應(yīng)用發(fā)展趨勢來看,目前主要有兩種方向:一是基于開源的基礎(chǔ)上自研大數(shù)據(jù)平臺供內(nèi)部使用;二是實(shí)現(xiàn)數(shù)據(jù)平臺的物理支撐,以租戶的方式提供大數(shù)據(jù)服務(wù)給眾多的小廠商。這兩種方向都會(huì)遇到上述的大量作業(yè)并發(fā)運(yùn)行的問題。對于內(nèi)部使用的數(shù)據(jù)平臺來說還可以通過限制作業(yè)并發(fā)運(yùn)行的數(shù)目來避免問題,但是對于以服務(wù)方式提供的數(shù)據(jù)平臺來說,大量作業(yè)并發(fā)運(yùn)行將是系統(tǒng)所必備的功能。
大量作業(yè)并發(fā)運(yùn)行的問題尚未在各大數(shù)據(jù)計(jì)算框架中引起足夠的重視,但是隨著提供服務(wù)的大數(shù)據(jù)平臺的推廣,使用服務(wù)的租戶的增長,大量作業(yè)并發(fā)的問題將很快成為一個(gè)亟待解決的問題。目前暫時(shí)也沒有發(fā)現(xiàn)完整、系統(tǒng)化的方案提出,大概可行的方案有如下幾種:
現(xiàn)有方法1:提升資源調(diào)度節(jié)點(diǎn)的機(jī)器性能,擴(kuò)大資源調(diào)度角色的cpu,內(nèi)存,網(wǎng)絡(luò)資源。這樣可以有限地提升資源調(diào)度節(jié)點(diǎn)的數(shù)據(jù)吞吐能力。
缺點(diǎn):為了滿足硬件的高配置要求,代價(jià)將會(huì)很高昂。而當(dāng)并發(fā)作業(yè)數(shù)上萬時(shí),該節(jié)點(diǎn)的負(fù)載將會(huì)非常高,很容易出現(xiàn)異常,且主備切換也需要花費(fèi)更多的時(shí)間。
現(xiàn)有方法2:使用多個(gè)大數(shù)據(jù)集群聯(lián)合,在其上封裝一個(gè)接口層,將作業(yè)負(fù)載均衡地分配到各集群上。該方法能較好地實(shí)現(xiàn)集群能力的橫向擴(kuò)展。
缺點(diǎn):由于集群之間資源是隔離的,租戶最多只能獲得一個(gè)集群的所有資源,而集群聯(lián)合的總資源往往是遠(yuǎn)遠(yuǎn)大于某一個(gè)集群的。
集群的數(shù)據(jù)源(通常是hdfs)往往是采用聯(lián)邦方式實(shí)現(xiàn)的橫向擴(kuò)展。當(dāng)作業(yè)需要處理的數(shù)據(jù)是跨越多個(gè)集群時(shí),作業(yè)由于只在一個(gè)集群上得到資源調(diào)度,對于集群外的數(shù)據(jù)全都需要遠(yuǎn)程獲取,本地性不夠,加大網(wǎng)絡(luò)負(fù)載。
由于存在多個(gè)集群,租戶的資源使用率不好控制,普通租戶和vip租戶的資源使用率如何避免集群差異的影響會(huì)比較復(fù)雜。
現(xiàn)有方法3:使用多個(gè)大數(shù)據(jù)集群聯(lián)合,并提供一個(gè)作業(yè)控制模塊。當(dāng)收到提交的作業(yè)時(shí)將作業(yè)按策略分解為多個(gè)作業(yè)并分發(fā)到相應(yīng)的數(shù)據(jù)集群進(jìn)行計(jì)算。由于多個(gè)集群聯(lián)合,資源調(diào)度模塊有多個(gè),作業(yè)的并發(fā)能力得到擴(kuò)展。
缺點(diǎn):作業(yè)控制模塊對作業(yè)的分解將依賴于作業(yè)的具體業(yè)務(wù),導(dǎo)致作業(yè)控制模塊的邏輯有依賴性。
作業(yè)由于被分解成了多個(gè)子作業(yè),如果業(yè)務(wù)邏輯還需要對數(shù)據(jù)進(jìn)行匯總的話,勢必還要一個(gè)匯總作業(yè)。復(fù)雜性比較高。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的在于提供一種去中心化資源調(diào)度方法及系統(tǒng),解決現(xiàn)有技術(shù)中大量作業(yè)并發(fā)的問題。
為了解決上述技術(shù)問題,本發(fā)明實(shí)施例提供一種去中心化資源調(diào)度方法,包括:
利用集群接入節(jié)點(diǎn)接收作業(yè);
利用資源調(diào)度策略節(jié)點(diǎn)根據(jù)當(dāng)前資源負(fù)載情況和所述作業(yè)中的作業(yè)特征和用戶特征得到對應(yīng)的資源調(diào)度節(jié)點(diǎn)信息;
若不存在與所述資源調(diào)度節(jié)點(diǎn)信息相對應(yīng)的資源調(diào)度節(jié)點(diǎn),則生成所述資 源調(diào)度節(jié)點(diǎn),利用所述資源調(diào)度節(jié)點(diǎn)為所述作業(yè)調(diào)度資源。
可選地,在所述利用集群接入節(jié)點(diǎn)接收作業(yè)之前,所述去中心化資源調(diào)度方法還包括:
配置預(yù)設(shè)數(shù)量預(yù)啟動(dòng)的所述資源調(diào)度節(jié)點(diǎn);
在系統(tǒng)啟動(dòng)時(shí),啟動(dòng)配置的所述預(yù)設(shè)數(shù)量的所述資源調(diào)度節(jié)點(diǎn)。
可選地,在所述利用所述資源調(diào)度節(jié)點(diǎn)為所述作業(yè)調(diào)度資源之后,所述去中心化資源調(diào)度方法還包括:
若預(yù)設(shè)時(shí)間段內(nèi)生成的所述資源調(diào)度節(jié)點(diǎn)沒有為另一作業(yè)調(diào)度資源,則自動(dòng)關(guān)閉生成的所述資源調(diào)度節(jié)點(diǎn)。
可選地,所述利用資源調(diào)度策略節(jié)點(diǎn)根據(jù)當(dāng)前資源負(fù)載情況和所述作業(yè)中的作業(yè)特征和用戶特征得到對應(yīng)的資源調(diào)度節(jié)點(diǎn)信息的步驟包括:
根據(jù)所述作業(yè)特征得到所述作業(yè)的數(shù)據(jù)本地性較好的資源調(diào)度節(jié)點(diǎn)集合;
根據(jù)所述用戶特征得到資源的限制約束;
根據(jù)預(yù)設(shè)策略,結(jié)合所述當(dāng)前資源負(fù)載情況、資源調(diào)度節(jié)點(diǎn)集合和資源的限制約束得到對應(yīng)的資源調(diào)度節(jié)點(diǎn)信息。
可選地,所述生成所述資源調(diào)度節(jié)點(diǎn)的步驟包括:
利用所述資源調(diào)度策略節(jié)點(diǎn)隨機(jī)選取一個(gè)隸屬于所述資源調(diào)度節(jié)點(diǎn)的作業(yè)運(yùn)算節(jié)點(diǎn),并通知該作業(yè)運(yùn)算節(jié)點(diǎn)啟動(dòng)一個(gè)容器來運(yùn)行所述資源調(diào)度節(jié)點(diǎn)。
可選地,所述利用所述資源調(diào)度節(jié)點(diǎn)為所述作業(yè)調(diào)度資源的步驟包括:
利用所述資源調(diào)度節(jié)點(diǎn)向資源匯報(bào)節(jié)點(diǎn)進(jìn)行注冊,并接收所述資源匯報(bào)節(jié)點(diǎn)根據(jù)預(yù)定規(guī)則匯報(bào)的空閑資源;
利用所述資源調(diào)度節(jié)點(diǎn)對作業(yè)控制節(jié)點(diǎn)根據(jù)切分的所述作業(yè)申請的資源進(jìn)行調(diào)度。
可選地,在所述利用所述資源調(diào)度節(jié)點(diǎn)對作業(yè)控制節(jié)點(diǎn)根據(jù)切分的所述作業(yè)申請的資源進(jìn)行調(diào)度之前,所述去中心化資源調(diào)度方法還包括:
利用所述資源調(diào)度節(jié)點(diǎn)通知與所述空閑資源對應(yīng)的作業(yè)運(yùn)算節(jié)點(diǎn)啟動(dòng)容器運(yùn)行所述作業(yè)控制節(jié)點(diǎn)。
可選地,所述去中心化資源調(diào)度方法還包括:
利用資源調(diào)度概覽節(jié)點(diǎn)實(shí)時(shí)獲取資源負(fù)載情況。
可選地,在所述利用所述資源調(diào)度節(jié)點(diǎn)為所述作業(yè)調(diào)度資源之后,所述去中心化資源調(diào)度方法還包括:
利用作業(yè)控制節(jié)點(diǎn)將調(diào)度的資源分配給所述作業(yè)中具體的任務(wù),并通知與調(diào)度的所述資源相對應(yīng)的作業(yè)運(yùn)算節(jié)點(diǎn)啟動(dòng)容器運(yùn)行所述任務(wù)。
可選地,在所述通知與調(diào)度的所述資源相對應(yīng)的作業(yè)運(yùn)算節(jié)點(diǎn)啟動(dòng)容器運(yùn)行所述任務(wù)之后,所述去中心化資源調(diào)度方法還包括:
在所述容器中的任務(wù)執(zhí)行完畢后,利用所述作業(yè)運(yùn)算節(jié)點(diǎn)通知所述作業(yè)控制節(jié)點(diǎn)關(guān)閉所述容器。
可選地,在所述利用所述作業(yè)運(yùn)算節(jié)點(diǎn)通知所述作業(yè)控制節(jié)點(diǎn)關(guān)閉所述容器之后,所述去中心化資源調(diào)度方法還包括:
在所述作業(yè)中的所有任務(wù)均執(zhí)行完畢后,利用所述作業(yè)控制節(jié)點(diǎn)通知所述資源調(diào)度節(jié)點(diǎn)資源釋放,并向所述資源調(diào)度節(jié)點(diǎn)申請關(guān)閉所述作業(yè)控制節(jié)點(diǎn)。
可選地,在所述利用所述資源調(diào)度節(jié)點(diǎn)為所述作業(yè)調(diào)度資源之后,所述去中心化資源調(diào)度方法還包括:
在所述資源重啟后,利用資源調(diào)度概覽節(jié)點(diǎn)根據(jù)所述資源的限制約束重新與對應(yīng)的所述資源調(diào)度節(jié)點(diǎn)建立關(guān)系。
可選地,所述在所述資源重啟后,利用資源調(diào)度概覽節(jié)點(diǎn)根據(jù)所述資源的限制約束重新與對應(yīng)的所述資源調(diào)度節(jié)點(diǎn)建立關(guān)系的步驟包括:
在所述資源重啟后,啟動(dòng)所述資源的作業(yè)控制節(jié)點(diǎn)和資源匯報(bào)節(jié)點(diǎn);
利用所述資源匯報(bào)節(jié)點(diǎn)通知所述資源調(diào)度概覽節(jié)點(diǎn)所述資源可用;
利用所述資源調(diào)度概覽節(jié)點(diǎn)依據(jù)所述資源的限制約束查找到對應(yīng)的所述資源調(diào)度節(jié)點(diǎn);
利用所述資源調(diào)度節(jié)點(diǎn)向所述資源的資源匯報(bào)節(jié)點(diǎn)進(jìn)行注冊,并接收所述資源的資源匯報(bào)節(jié)點(diǎn)根據(jù)預(yù)定規(guī)則匯報(bào)的空閑資源。
本發(fā)明還提供了一種去中心化資源調(diào)度系統(tǒng),包括:
接收模塊,用于利用集群接入節(jié)點(diǎn)接收作業(yè);
第一處理模塊,用于利用資源調(diào)度策略節(jié)點(diǎn)根據(jù)當(dāng)前資源負(fù)載情況和所述作業(yè)中的作業(yè)特征和用戶特征得到對應(yīng)的資源調(diào)度節(jié)點(diǎn)信息;
第二處理模塊,用于若不存在與所述資源調(diào)度節(jié)點(diǎn)信息相對應(yīng)的資源調(diào)度 節(jié)點(diǎn),則生成所述資源調(diào)度節(jié)點(diǎn),利用所述資源調(diào)度節(jié)點(diǎn)為所述作業(yè)調(diào)度資源。
可選地,所述去中心化資源調(diào)度系統(tǒng)還包括:
配置模塊,用于在所述接收模塊執(zhí)行操作之前,配置預(yù)設(shè)數(shù)量預(yù)啟動(dòng)的所述資源調(diào)度節(jié)點(diǎn);
啟動(dòng)模塊,用于在系統(tǒng)啟動(dòng)時(shí),啟動(dòng)配置的所述預(yù)設(shè)數(shù)量的所述資源調(diào)度節(jié)點(diǎn)。
可選地,所述去中心化資源調(diào)度系統(tǒng)還包括:
關(guān)閉模塊,用于在所述第二處理模塊執(zhí)行操作之后,若預(yù)設(shè)時(shí)間段內(nèi)生成的所述資源調(diào)度節(jié)點(diǎn)沒有為另一作業(yè)調(diào)度資源,則自動(dòng)關(guān)閉生成的所述資源調(diào)度節(jié)點(diǎn)。
可選地,所述第一處理模塊包括:
第一處理子模塊,用于根據(jù)所述作業(yè)特征得到所述作業(yè)的數(shù)據(jù)本地性較好的資源調(diào)度節(jié)點(diǎn)集合;
第二處理子模塊,用于根據(jù)所述用戶特征得到資源的限制約束;
第三處理子模塊,用于根據(jù)預(yù)設(shè)策略,結(jié)合所述當(dāng)前資源負(fù)載情況、資源調(diào)度節(jié)點(diǎn)集合和資源的限制約束得到對應(yīng)的資源調(diào)度節(jié)點(diǎn)信息。
可選地,所述第二處理模塊包括:
第四處理子模塊,用于利用所述資源調(diào)度策略節(jié)點(diǎn)隨機(jī)選取一個(gè)隸屬于所述資源調(diào)度節(jié)點(diǎn)的作業(yè)運(yùn)算節(jié)點(diǎn),并通知該作業(yè)運(yùn)算節(jié)點(diǎn)啟動(dòng)一個(gè)容器來運(yùn)行所述資源調(diào)度節(jié)點(diǎn)。
可選地,所述第二處理模塊包括:
第五處理子模塊,用于利用所述資源調(diào)度節(jié)點(diǎn)向資源匯報(bào)節(jié)點(diǎn)進(jìn)行注冊,并接收所述資源匯報(bào)節(jié)點(diǎn)根據(jù)預(yù)定規(guī)則匯報(bào)的空閑資源;
調(diào)度子模塊,用于利用所述資源調(diào)度節(jié)點(diǎn)對作業(yè)控制節(jié)點(diǎn)根據(jù)切分的所述作業(yè)申請的資源進(jìn)行調(diào)度。
可選地,所述去中心化資源調(diào)度系統(tǒng)還包括:
第一通知模塊,用于所述調(diào)度子模塊執(zhí)行操作之前,利用所述資源調(diào)度節(jié)點(diǎn)通知與所述空閑資源對應(yīng)的作業(yè)運(yùn)算節(jié)點(diǎn)啟動(dòng)容器運(yùn)行所述作業(yè)控制節(jié)點(diǎn)。
可選地,所述去中心化資源調(diào)度系統(tǒng)還包括:
獲取模塊,用于利用資源調(diào)度概覽節(jié)點(diǎn)實(shí)時(shí)獲取資源負(fù)載情況。
可選地,所述去中心化資源調(diào)度系統(tǒng)還包括:
第三處理模塊,用于所述第二處理模塊執(zhí)行操作之后,利用作業(yè)控制節(jié)點(diǎn)將調(diào)度的資源分配給所述作業(yè)中具體的任務(wù),并通知與調(diào)度的所述資源相對應(yīng)的作業(yè)運(yùn)算節(jié)點(diǎn)啟動(dòng)容器運(yùn)行所述任務(wù)。
可選地,所述去中心化資源調(diào)度系統(tǒng)還包括:
第二通知模塊,用于所述第三處理模塊執(zhí)行操作之后,在所述容器中的任務(wù)執(zhí)行完畢后,利用所述作業(yè)運(yùn)算節(jié)點(diǎn)通知所述作業(yè)控制節(jié)點(diǎn)關(guān)閉所述容器。
可選地,所述去中心化資源調(diào)度系統(tǒng)還包括:
第四處理模塊,用于所述第二通知模塊執(zhí)行操作之后,在所述作業(yè)中的所有任務(wù)均執(zhí)行完畢后,利用所述作業(yè)控制節(jié)點(diǎn)通知所述資源調(diào)度節(jié)點(diǎn)資源釋放,并向所述資源調(diào)度節(jié)點(diǎn)申請關(guān)閉所述作業(yè)控制節(jié)點(diǎn)。
可選地,所述去中心化資源調(diào)度系統(tǒng)還包括:
建立模塊,用于所述第二處理模塊執(zhí)行操作之后,在所述資源重啟后,利用資源調(diào)度概覽節(jié)點(diǎn)根據(jù)所述資源的限制約束重新與對應(yīng)的所述資源調(diào)度節(jié)點(diǎn)建立關(guān)系。
可選地,所述建立模塊包括:
啟動(dòng)子模塊,用于在所述資源重啟后,啟動(dòng)所述資源的作業(yè)控制節(jié)點(diǎn)和資源匯報(bào)節(jié)點(diǎn);
通知子模塊,用于利用所述資源匯報(bào)節(jié)點(diǎn)通知所述資源調(diào)度概覽節(jié)點(diǎn)所述資源可用;
查找子模塊,用于利用所述資源調(diào)度概覽節(jié)點(diǎn)依據(jù)所述資源的限制約束查找到對應(yīng)的所述資源調(diào)度節(jié)點(diǎn);
第六處理子模塊,用于利用所述資源調(diào)度節(jié)點(diǎn)向所述資源的資源匯報(bào)節(jié)點(diǎn)進(jìn)行注冊,并接收所述資源的資源匯報(bào)節(jié)點(diǎn)根據(jù)預(yù)定規(guī)則匯報(bào)的空閑資源。
本發(fā)明的上述技術(shù)方案的有益效果如下:
上述方案中,所述去中心化資源調(diào)度方法通過動(dòng)態(tài)生成資源調(diào)度節(jié)點(diǎn),能消除作業(yè)并發(fā)容量的限制,達(dá)到比集群聯(lián)合更強(qiáng)的作業(yè)承載能力;并且由于資源調(diào)度節(jié)點(diǎn)是動(dòng)態(tài)生成的,所以可以根據(jù)集群實(shí)際資源總量,數(shù)據(jù)本地性,租 戶特定等情況動(dòng)態(tài)調(diào)整,實(shí)現(xiàn)動(dòng)態(tài)負(fù)載均衡,性能及租戶特性等需求,較好的解決了現(xiàn)有技術(shù)中大量作業(yè)并發(fā)的問題。
附圖說明
圖1為本發(fā)明實(shí)施例一的去中心化資源調(diào)度方法流程示意圖;
圖2為本發(fā)明實(shí)施例一的各節(jié)點(diǎn)連接關(guān)系示意圖;
圖3為本發(fā)明實(shí)施例一的作業(yè)提交到動(dòng)態(tài)資源調(diào)度節(jié)點(diǎn)流程示意圖;
圖4為本發(fā)明實(shí)施例一的資源匯報(bào)節(jié)點(diǎn)向多個(gè)資源調(diào)度節(jié)點(diǎn)匯報(bào)空閑資源流程示意圖;
圖5為本發(fā)明實(shí)施例一的宕機(jī)資源重啟參與調(diào)度流程示意圖;
圖6為本發(fā)明實(shí)施例一的資源調(diào)度節(jié)點(diǎn)高可用性流程示意圖;
圖7為本發(fā)明實(shí)施例二的去中心化資源調(diào)度系統(tǒng)構(gòu)成示意圖。
具體實(shí)施方式
為使本發(fā)明要解決的技術(shù)問題、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖及具體實(shí)施例進(jìn)行詳細(xì)描述。
本發(fā)明針對現(xiàn)有的技術(shù)中大量作業(yè)并發(fā)的問題,提供了多種解決方案,具體如下:
實(shí)施例一
如圖1所示,本發(fā)明實(shí)施例一提供的去中心化資源調(diào)度方法包括:
步驟11:利用集群接入節(jié)點(diǎn)接收作業(yè);
步驟12:利用資源調(diào)度策略節(jié)點(diǎn)根據(jù)當(dāng)前資源負(fù)載情況和所述作業(yè)中的作業(yè)特征和用戶特征得到對應(yīng)的資源調(diào)度節(jié)點(diǎn)信息;
步驟13:若不存在與所述資源調(diào)度節(jié)點(diǎn)信息相對應(yīng)的資源調(diào)度節(jié)點(diǎn),則生成所述資源調(diào)度節(jié)點(diǎn),利用所述資源調(diào)度節(jié)點(diǎn)為所述作業(yè)調(diào)度資源。
本發(fā)明實(shí)施例一提供的所述去中心化資源調(diào)度方法通過動(dòng)態(tài)生成資源調(diào)度節(jié)點(diǎn),能消除作業(yè)并發(fā)容量的限制,達(dá)到比集群聯(lián)合更強(qiáng)的作業(yè)承載能力;并且由于資源調(diào)度節(jié)點(diǎn)是動(dòng)態(tài)生成的,所以可以根據(jù)集群實(shí)際資源總量,數(shù)據(jù)本地性,租戶特定等情況動(dòng)態(tài)調(diào)整,實(shí)現(xiàn)動(dòng)態(tài)負(fù)載均衡,性能及租戶特性等需求, 較好的解決了現(xiàn)有技術(shù)中大量作業(yè)并發(fā)的問題。
為了進(jìn)一步提高運(yùn)行性能,節(jié)省時(shí)間,在所述利用集群接入節(jié)點(diǎn)接收作業(yè)之前,所述去中心化資源調(diào)度方法還包括:配置預(yù)設(shè)數(shù)量預(yù)啟動(dòng)的所述資源調(diào)度節(jié)點(diǎn);在系統(tǒng)啟動(dòng)時(shí),啟動(dòng)配置的所述預(yù)設(shè)數(shù)量的所述資源調(diào)度節(jié)點(diǎn)。
進(jìn)一步的,在所述利用所述資源調(diào)度節(jié)點(diǎn)為所述作業(yè)調(diào)度資源之后,所述去中心化資源調(diào)度方法還包括:若預(yù)設(shè)時(shí)間段內(nèi)生成的所述資源調(diào)度節(jié)點(diǎn)沒有為另一作業(yè)調(diào)度資源,則自動(dòng)關(guān)閉生成的所述資源調(diào)度節(jié)點(diǎn)。
具體的,所述利用資源調(diào)度策略節(jié)點(diǎn)根據(jù)當(dāng)前資源負(fù)載情況和所述作業(yè)中的作業(yè)特征和用戶特征得到對應(yīng)的資源調(diào)度節(jié)點(diǎn)信息的步驟包括:根據(jù)所述作業(yè)特征得到所述作業(yè)的數(shù)據(jù)本地性較好的資源調(diào)度節(jié)點(diǎn)集合;根據(jù)所述用戶特征得到資源的限制約束;根據(jù)預(yù)設(shè)策略,結(jié)合所述當(dāng)前資源負(fù)載情況、資源調(diào)度節(jié)點(diǎn)集合和資源的限制約束得到對應(yīng)的資源調(diào)度節(jié)點(diǎn)信息。
其中,所述生成所述資源調(diào)度節(jié)點(diǎn)的步驟包括:利用所述資源調(diào)度策略節(jié)點(diǎn)隨機(jī)選取一個(gè)隸屬于所述資源調(diào)度節(jié)點(diǎn)的作業(yè)運(yùn)算節(jié)點(diǎn),并通知該作業(yè)運(yùn)算節(jié)點(diǎn)啟動(dòng)一個(gè)容器來運(yùn)行所述資源調(diào)度節(jié)點(diǎn)。
考慮到本申請中一個(gè)作業(yè)運(yùn)算節(jié)點(diǎn)可能對應(yīng)于多個(gè)資源調(diào)度節(jié)點(diǎn),本發(fā)明實(shí)施例中,所述利用所述資源調(diào)度節(jié)點(diǎn)為所述作業(yè)調(diào)度資源的步驟包括:利用所述資源調(diào)度節(jié)點(diǎn)向資源匯報(bào)節(jié)點(diǎn)進(jìn)行注冊,并接收所述資源匯報(bào)節(jié)點(diǎn)根據(jù)預(yù)定規(guī)則(涉及各資源調(diào)度節(jié)點(diǎn)的負(fù)載、權(quán)重)匯報(bào)的空閑資源;利用所述資源調(diào)度節(jié)點(diǎn)對作業(yè)控制節(jié)點(diǎn)根據(jù)切分的所述作業(yè)申請的資源進(jìn)行調(diào)度。
進(jìn)一步的,在所述利用所述資源調(diào)度節(jié)點(diǎn)對作業(yè)控制節(jié)點(diǎn)根據(jù)切分的所述作業(yè)申請的資源進(jìn)行調(diào)度之前,所述去中心化資源調(diào)度方法還包括:利用所述資源調(diào)度節(jié)點(diǎn)通知與所述空閑資源對應(yīng)的作業(yè)運(yùn)算節(jié)點(diǎn)啟動(dòng)容器運(yùn)行所述作業(yè)控制節(jié)點(diǎn)。
為了便于得到當(dāng)前資源負(fù)載情況,本發(fā)明實(shí)施例中,所述去中心化資源調(diào)度方法還包括:利用資源調(diào)度概覽節(jié)點(diǎn)實(shí)時(shí)獲取資源負(fù)載情況。
為了方案的完整性,在所述利用所述資源調(diào)度節(jié)點(diǎn)為所述作業(yè)調(diào)度資源之后,所述去中心化資源調(diào)度方法還包括:利用作業(yè)控制節(jié)點(diǎn)將調(diào)度的資源分配給所述作業(yè)中具體的任務(wù),并通知與調(diào)度的所述資源相對應(yīng)的作業(yè)運(yùn)算節(jié)點(diǎn)啟 動(dòng)容器運(yùn)行所述任務(wù)。
進(jìn)一步的,在所述通知與調(diào)度的所述資源相對應(yīng)的作業(yè)運(yùn)算節(jié)點(diǎn)啟動(dòng)容器運(yùn)行所述任務(wù)之后,所述去中心化資源調(diào)度方法還包括:在所述容器中的任務(wù)執(zhí)行完畢后,利用所述作業(yè)運(yùn)算節(jié)點(diǎn)通知所述作業(yè)控制節(jié)點(diǎn)關(guān)閉所述容器。
更進(jìn)一步的,在所述利用所述作業(yè)運(yùn)算節(jié)點(diǎn)通知所述作業(yè)控制節(jié)點(diǎn)關(guān)閉所述容器之后,所述去中心化資源調(diào)度方法還包括:在所述作業(yè)中的所有任務(wù)均執(zhí)行完畢后,利用所述作業(yè)控制節(jié)點(diǎn)通知所述資源調(diào)度節(jié)點(diǎn)資源釋放,并向所述資源調(diào)度節(jié)點(diǎn)申請關(guān)閉所述作業(yè)控制節(jié)點(diǎn)。
考慮到資源可能出現(xiàn)宕機(jī)的情況,在所述利用所述資源調(diào)度節(jié)點(diǎn)為所述作業(yè)調(diào)度資源之后,所述去中心化資源調(diào)度方法還包括:在所述資源重啟后,利用資源調(diào)度概覽節(jié)點(diǎn)根據(jù)所述資源的限制約束重新與對應(yīng)的所述資源調(diào)度節(jié)點(diǎn)建立關(guān)系。
具體的,所述在所述資源重啟后,利用資源調(diào)度概覽節(jié)點(diǎn)根據(jù)所述資源的限制約束重新與對應(yīng)的所述資源調(diào)度節(jié)點(diǎn)建立關(guān)系的步驟包括:在所述資源重啟后,啟動(dòng)所述資源的作業(yè)控制節(jié)點(diǎn)和資源匯報(bào)節(jié)點(diǎn);利用所述資源匯報(bào)節(jié)點(diǎn)通知所述資源調(diào)度概覽節(jié)點(diǎn)所述資源可用;利用所述資源調(diào)度概覽節(jié)點(diǎn)依據(jù)所述資源的限制約束查找到對應(yīng)的所述資源調(diào)度節(jié)點(diǎn);利用所述資源調(diào)度節(jié)點(diǎn)向所述資源的資源匯報(bào)節(jié)點(diǎn)進(jìn)行注冊,并接收所述資源的資源匯報(bào)節(jié)點(diǎn)根據(jù)預(yù)定規(guī)則(涉及各資源調(diào)度節(jié)點(diǎn)的負(fù)載、權(quán)重)匯報(bào)的空閑資源。
下面對本發(fā)明實(shí)施例一提供的去中心化資源調(diào)度方法進(jìn)行具體說明。
其中,主要涉及如下三個(gè)功能:
1.集群拓?fù)涞木S護(hù):
集群新引入了集群接入代理角色。集群接入代理角色收集集群中所有的計(jì)算節(jié)點(diǎn)角色的信息,從而維護(hù)集群的拓?fù)浣Y(jié)構(gòu)。計(jì)算節(jié)點(diǎn)角色是通過心跳和集群接入代理角色保持連接的。集群接入代理角色還承擔(dān)作業(yè)提交端的接入功能,當(dāng)收到提交的作業(yè)時(shí),根據(jù)作業(yè)特點(diǎn)和租戶特點(diǎn)將作業(yè)提交到已存在的資源調(diào)度節(jié)點(diǎn)上或新建相應(yīng)的資源調(diào)度節(jié)點(diǎn)。
2.資源調(diào)度節(jié)點(diǎn)的動(dòng)態(tài)創(chuàng)建:
在現(xiàn)有的系統(tǒng)中資源調(diào)度節(jié)點(diǎn)是靜態(tài)配置的,在系統(tǒng)啟動(dòng)時(shí)就運(yùn)行起來。而 本發(fā)明的系統(tǒng)中資源調(diào)度節(jié)點(diǎn)是動(dòng)態(tài)創(chuàng)建的。
當(dāng)集群接入代理角色發(fā)現(xiàn)需要新建資源調(diào)度節(jié)點(diǎn)時(shí),其會(huì)根據(jù)該資源調(diào)度節(jié)點(diǎn)所屬的計(jì)算節(jié)點(diǎn)角色列表中隨機(jī)抽取一個(gè)節(jié)點(diǎn),通知該節(jié)點(diǎn)啟動(dòng)一個(gè)容器來運(yùn)行資源調(diào)度節(jié)點(diǎn)。資源調(diào)度節(jié)點(diǎn)運(yùn)行后可以設(shè)置策略決定是否在空閑一段時(shí)間后自行銷毀。
3.計(jì)算節(jié)點(diǎn)資源狀態(tài)的選擇性匯報(bào):
一個(gè)計(jì)算節(jié)點(diǎn)可能歸屬于多個(gè)資源調(diào)度節(jié)點(diǎn),為此其資源狀態(tài)不能全部匯報(bào)給所有的資源調(diào)度節(jié)點(diǎn)。而應(yīng)該根據(jù)資源調(diào)度節(jié)點(diǎn)之間的權(quán)重,分別匯報(bào)不同數(shù)量的資源。
主要涉及如下節(jié)點(diǎn):
首先是現(xiàn)有資源調(diào)度方案運(yùn)行中的已有節(jié)點(diǎn):
1.資源調(diào)度節(jié)點(diǎn):
為作業(yè)的運(yùn)行提供資源調(diào)度的功能。該節(jié)點(diǎn)獲取屬下節(jié)點(diǎn)的資源匯報(bào)節(jié)點(diǎn)上報(bào)的資源,并根據(jù)既定的策略規(guī)則調(diào)度給作業(yè)運(yùn)行。
2.作業(yè)控制節(jié)點(diǎn):
資源調(diào)度節(jié)點(diǎn)收到作業(yè)請求后一旦有空閑資源,將會(huì)在資源對應(yīng)的節(jié)點(diǎn)上啟動(dòng)一個(gè)作業(yè)控制節(jié)點(diǎn)。后續(xù)作業(yè)中任務(wù)的資源請求,任務(wù)的執(zhí)行和容錯(cuò)等都由該作業(yè)控制節(jié)點(diǎn)完成。引入該節(jié)點(diǎn)的原因是為了降低資源調(diào)度節(jié)點(diǎn)的負(fù)荷,并且可以支持多種多樣的作業(yè)類型。當(dāng)作業(yè)完成后,該節(jié)點(diǎn)可在匯報(bào)資源調(diào)度節(jié)點(diǎn)后銷毀。
3.作業(yè)運(yùn)算節(jié)點(diǎn):
負(fù)責(zé)接收作業(yè)控制節(jié)點(diǎn)的任務(wù)運(yùn)算請求,并在申請的資源容器中運(yùn)行。
為了實(shí)現(xiàn)資源調(diào)度角色的動(dòng)態(tài)創(chuàng)建和銷毀,及對作業(yè)提交端的屏蔽,本方案還需要如下節(jié)點(diǎn):
4.集群接入節(jié)點(diǎn):
負(fù)責(zé)收集集群中所有作業(yè)運(yùn)算節(jié)點(diǎn)的服務(wù)可用狀態(tài),并在收到作業(yè)提交端請求時(shí),根據(jù)作業(yè)特點(diǎn)和租戶特點(diǎn)將作業(yè)提交到已存在的資源調(diào)度角色上或新建相應(yīng)的資源調(diào)度角色。
5.資源調(diào)度概覽節(jié)點(diǎn):
負(fù)責(zé)獲取當(dāng)前運(yùn)行中的所有資源調(diào)度節(jié)點(diǎn)的使用狀況,并匯總為整個(gè)集群的使用信息。
6.資源調(diào)度策略節(jié)點(diǎn):
負(fù)責(zé)根據(jù)作業(yè)特點(diǎn)和租戶特點(diǎn),并結(jié)合當(dāng)前各資源調(diào)度節(jié)點(diǎn)的負(fù)載計(jì)算作業(yè)所對應(yīng)的資源調(diào)度節(jié)點(diǎn),如果該資源調(diào)度節(jié)點(diǎn)不存在,則先通知作業(yè)運(yùn)算節(jié)點(diǎn)去創(chuàng)建一個(gè)。
7.資源匯報(bào)節(jié)點(diǎn):
在現(xiàn)有的方案中資源匯報(bào)是由作業(yè)運(yùn)算節(jié)點(diǎn)代為實(shí)現(xiàn)的,但是現(xiàn)在對于同一個(gè)作業(yè)運(yùn)算節(jié)點(diǎn)來說,可能對應(yīng)著多個(gè)資源調(diào)度節(jié)點(diǎn),所以資源應(yīng)該匯報(bào)給哪個(gè)資源調(diào)度節(jié)點(diǎn)將是需要決策的事情。為此本方案采用資源匯報(bào)節(jié)點(diǎn)結(jié)合各資源調(diào)度節(jié)點(diǎn)的負(fù)載,權(quán)重等策略方式將資源拆分匯報(bào)給各資源調(diào)度節(jié)點(diǎn)。
各節(jié)點(diǎn)角色之間的串聯(lián)關(guān)系,如圖2所示:
集群接入節(jié)點(diǎn),資源調(diào)度概覽節(jié)點(diǎn),資源調(diào)度策略節(jié)點(diǎn)這三個(gè)節(jié)點(diǎn)存在于集群接入代理角色中。不考慮高可用的話,該角色可以只有一個(gè)。資源調(diào)度預(yù)覽節(jié)點(diǎn)收集資源匯報(bào)節(jié)點(diǎn)的服務(wù)狀態(tài),了解計(jì)算節(jié)點(diǎn)的服務(wù)是否可用,從而得到集群總拓?fù)鋱D。另外其還接收當(dāng)前運(yùn)行中的資源調(diào)度節(jié)點(diǎn)上報(bào)的該調(diào)度節(jié)點(diǎn)的使用信息,從而匯總得到集群總資源使用情況,和各租戶的使用情況。集群接入節(jié)點(diǎn)收到作業(yè)提交請求,并提交給資源調(diào)度策略節(jié)點(diǎn)。資源調(diào)度策略節(jié)點(diǎn)將結(jié)合資源調(diào)度概覽節(jié)點(diǎn)反饋的資源負(fù)載情況,作業(yè)特點(diǎn)及租戶特點(diǎn)為作業(yè)分配已有的資源調(diào)度節(jié)點(diǎn)或新建資源調(diào)度節(jié)點(diǎn)。
資源匯報(bào)節(jié)點(diǎn)和作業(yè)運(yùn)算節(jié)點(diǎn)處于計(jì)算節(jié)點(diǎn)角色中,且集群中的每個(gè)節(jié)點(diǎn)上都有一個(gè)該角色。資源匯報(bào)節(jié)點(diǎn)可以和資源調(diào)度概覽節(jié)點(diǎn)交互,以告知該節(jié)點(diǎn)服務(wù)可用;還可以和多個(gè)資源調(diào)度節(jié)點(diǎn)交互,根據(jù)一定的策略將節(jié)點(diǎn)上的可用資源匯報(bào)給某個(gè)資源調(diào)度節(jié)點(diǎn),以供其分配到具體的作業(yè)。作業(yè)運(yùn)算節(jié)點(diǎn)負(fù)責(zé)接收容器運(yùn)行請求,以請求中申請的資源運(yùn)行一個(gè)容器,并在容器中運(yùn)行作業(yè)的任務(wù),或作業(yè)控制節(jié)點(diǎn),或資源調(diào)度節(jié)點(diǎn)。
資源調(diào)度節(jié)點(diǎn)和作業(yè)控制節(jié)點(diǎn)一般都是臨時(shí)的,有生命周期的。這兩個(gè)節(jié)點(diǎn)都可以啟動(dòng)多個(gè),并都是在作業(yè)運(yùn)算節(jié)點(diǎn)啟動(dòng)的容器中運(yùn)行。作業(yè)被提交后將通過集群接入節(jié)點(diǎn),資源調(diào)度策略節(jié)點(diǎn)后轉(zhuǎn)交到資源調(diào)度節(jié)點(diǎn)。資源調(diào)度節(jié)點(diǎn) 再通知作業(yè)運(yùn)算節(jié)點(diǎn)啟動(dòng)一個(gè)容器來運(yùn)行作業(yè)控制節(jié)點(diǎn),接下來就只負(fù)責(zé)資源的申請和分配。而作業(yè)控制節(jié)點(diǎn)運(yùn)行后將負(fù)責(zé)作業(yè)中任務(wù)的運(yùn)行依賴及容錯(cuò)等一系列事宜。
當(dāng)作業(yè)提交端提交一個(gè)作業(yè)后,作業(yè)的運(yùn)行流程主要包括以下步驟:
第一步:各節(jié)點(diǎn)的資源匯報(bào)節(jié)點(diǎn)向資源調(diào)度概覽節(jié)點(diǎn)匯報(bào)節(jié)點(diǎn)服務(wù)可用情況,資源調(diào)度概覽節(jié)點(diǎn)匯總得到集群的資源拓?fù)鋱D。
第二步:集群接入節(jié)點(diǎn)收到作業(yè)提交請求,將檢查作業(yè)的特點(diǎn),獲得其數(shù)據(jù)本地性較好的節(jié)點(diǎn)集合,再檢查租戶的特點(diǎn),獲得資源的限制約束,然后資源調(diào)度策略節(jié)點(diǎn)結(jié)合資源調(diào)度概覽節(jié)點(diǎn)的資源使用情況,將作業(yè)分配到相應(yīng)的資源調(diào)度節(jié)點(diǎn)上。如該調(diào)度節(jié)點(diǎn)不存在,資源調(diào)度策略節(jié)點(diǎn)隨機(jī)選取該調(diào)度節(jié)點(diǎn)屬下某個(gè)節(jié)點(diǎn)的作業(yè)運(yùn)算節(jié)點(diǎn),通知其啟動(dòng)一個(gè)容器來運(yùn)行該資源調(diào)度節(jié)點(diǎn)。啟動(dòng)成功后,作業(yè)被轉(zhuǎn)交到資源調(diào)度節(jié)點(diǎn),且之后的作業(yè)提交端將直接和該資源調(diào)度節(jié)點(diǎn)聯(lián)系,以減少集群接入節(jié)點(diǎn)的壓力。
具體如圖3所示,包括:
步驟31:作業(yè)提交;
步驟32:集群接入節(jié)點(diǎn)收到作業(yè)提交請求;
步驟33:資源調(diào)度策略節(jié)點(diǎn)根據(jù)作業(yè)特點(diǎn)、租戶特點(diǎn)和當(dāng)前資源負(fù)載狀況計(jì)算出合適的資源調(diào)度節(jié)點(diǎn);
步驟34:判斷計(jì)算出的資源調(diào)度節(jié)點(diǎn)是否已存在,若是,進(jìn)入步驟35,若否,進(jìn)入步驟36;
步驟35:作業(yè)提交到合適的資源調(diào)度節(jié)點(diǎn);
步驟36:通知該資源調(diào)度節(jié)點(diǎn)屬下某一資源的作業(yè)運(yùn)算節(jié)點(diǎn)啟動(dòng)容器來運(yùn)行資源調(diào)度節(jié)點(diǎn);
步驟37:判斷該資源調(diào)度節(jié)點(diǎn)是否運(yùn)行成功,若是,進(jìn)入步驟38,若否,返回步驟36;
步驟38:通知資源調(diào)度策略節(jié)點(diǎn),進(jìn)入步驟35。
第三步:資源調(diào)度節(jié)點(diǎn)運(yùn)行后向其屬下的各資源匯報(bào)節(jié)點(diǎn)注冊,各資源匯報(bào)節(jié)點(diǎn)在節(jié)點(diǎn)上有空閑資源時(shí)根據(jù)負(fù)載策略向其上注冊的各資源調(diào)度節(jié)點(diǎn)匯報(bào)部分空閑資源。
具體如圖4所示,包括:
步驟41:資源有空閑;
步驟42:判斷資源是否歸屬于已有的資源調(diào)度節(jié)點(diǎn),若否,進(jìn)入步驟43,若是,進(jìn)入步驟44;
步驟43:不處理,結(jié)束流程;
步驟44:計(jì)算各級資源調(diào)度列表的已滿足資源比例;
步驟45:根據(jù)不同級別的權(quán)重?fù)Q算為統(tǒng)一的已滿足資源比例;
步驟46:選擇已滿足資源比例最小的隊(duì)列分配資源;
步驟47:計(jì)算該級別隊(duì)列中各資源調(diào)度節(jié)點(diǎn)的已滿足資源比例;
步驟48:選擇已滿足資源比例最小的資源調(diào)度節(jié)點(diǎn)分配資源;
步驟49:判斷是否仍有資源空閑,若是,返回步驟44,若否,結(jié)束流程。
第四步:資源調(diào)度節(jié)點(diǎn)在收到屬下節(jié)點(diǎn)匯報(bào)的空閑資源時(shí),將通知該資源對應(yīng)節(jié)點(diǎn)的作業(yè)運(yùn)算節(jié)點(diǎn)啟動(dòng)一個(gè)容器運(yùn)行作業(yè)控制節(jié)點(diǎn)。
第五步:作業(yè)控制節(jié)點(diǎn)將根據(jù)切分的任務(wù)向資源調(diào)度節(jié)點(diǎn)申請資源。
第六步:資源調(diào)度節(jié)點(diǎn)在收到作業(yè)控制節(jié)點(diǎn)發(fā)來的資源請求時(shí),一旦屬下節(jié)點(diǎn)有空閑資源,將會(huì)將資源分配給作業(yè)控制節(jié)點(diǎn)。
第七步:作業(yè)控制節(jié)點(diǎn)收到資源后將分配到具體的任務(wù),并通知該資源對應(yīng)節(jié)點(diǎn)的作業(yè)運(yùn)算節(jié)點(diǎn)啟動(dòng)容器來運(yùn)行任務(wù)。
第八步:作業(yè)運(yùn)算節(jié)點(diǎn)啟動(dòng)的容器中任務(wù)運(yùn)行完畢后將會(huì)通知作業(yè)控制節(jié)點(diǎn),并關(guān)閉容器。
第九步:作業(yè)的所有任務(wù)運(yùn)行完畢后作業(yè)控制節(jié)點(diǎn)將會(huì)通知資源調(diào)度節(jié)點(diǎn),并向調(diào)度節(jié)點(diǎn)申請關(guān)閉作業(yè)控制節(jié)點(diǎn)。
第十步:資源調(diào)度節(jié)點(diǎn)上的作業(yè)全部運(yùn)行完成后,如是臨時(shí)資源調(diào)度節(jié)點(diǎn),且在一段時(shí)間內(nèi)沒有執(zhí)行新的作業(yè),將會(huì)自行關(guān)閉。
對于資源宕機(jī)的情況,本方案提供如圖5所示的措施,包括:
步驟51:有資源加入;
步驟52:該資源的作業(yè)控制節(jié)點(diǎn)和資源匯報(bào)節(jié)點(diǎn)啟動(dòng);
步驟53:資源匯報(bào)節(jié)點(diǎn)通知資源調(diào)度概覽節(jié)點(diǎn)新資源服務(wù)可用;
步驟54:判斷屬下是否有資源調(diào)度節(jié)點(diǎn)規(guī)模不足;若否,進(jìn)入步驟55,若 是,進(jìn)入步驟56;
步驟55:該資源等待資源調(diào)度概覽節(jié)點(diǎn)分配給新的資源調(diào)度節(jié)點(diǎn);
步驟56:判斷該資源是否可歸屬于已有的資源調(diào)度節(jié)點(diǎn),若是,進(jìn)入步驟57,若否,返回步驟55;
步驟57:對應(yīng)的資源調(diào)度節(jié)點(diǎn)去新增資源的資源匯報(bào)節(jié)點(diǎn)注冊;
步驟58:新增資源向?qū)?yīng)的資源調(diào)度節(jié)點(diǎn)匯報(bào)可用資源。
為了實(shí)現(xiàn)資源調(diào)度節(jié)點(diǎn)的高可用性,本方案提供如圖6所示的措施,包括:
步驟61:作業(yè)提交;
步驟62:集群接入節(jié)點(diǎn)收到作業(yè)提交請求;
步驟63:資源調(diào)度策略節(jié)點(diǎn)根據(jù)作業(yè)特點(diǎn)、租戶特點(diǎn)和當(dāng)前資源負(fù)載狀況計(jì)算出合適的主資源調(diào)度節(jié)點(diǎn);
步驟64:在主資源調(diào)度節(jié)點(diǎn)不存在時(shí),先啟動(dòng)該主資源調(diào)度節(jié)點(diǎn);
步驟65:將作業(yè)提交到該主資源調(diào)度節(jié)點(diǎn);
步驟66:判斷對應(yīng)的備資源調(diào)度節(jié)點(diǎn)是否正常,若是,進(jìn)入步驟67,若否,進(jìn)入步驟68;
步驟67:與主資源調(diào)度節(jié)點(diǎn)同步作業(yè)狀態(tài),并在主資源調(diào)度節(jié)點(diǎn)出現(xiàn)問題時(shí),提供服務(wù),升級為主資源調(diào)度節(jié)點(diǎn),啟用下一對應(yīng)備資源調(diào)度節(jié)點(diǎn),返回步驟66;
步驟68:在不同機(jī)房的資源上啟動(dòng)另一備用資源調(diào)度節(jié)點(diǎn),返回步驟66。
綜上可知,采用本發(fā)明實(shí)施例提供的方案,與現(xiàn)有方案相比,節(jié)點(diǎn)的擴(kuò)展性更強(qiáng),人工干預(yù)少,節(jié)點(diǎn)動(dòng)態(tài)增加減少可以不停服務(wù);集群計(jì)算的本地性較好,可以計(jì)算數(shù)據(jù)所在的節(jié)點(diǎn)群歸屬于一個(gè)資源調(diào)度節(jié)點(diǎn)進(jìn)行計(jì)算;集群的資源利用率高,支持集中集群所有的資源來運(yùn)行作業(yè);集群的資源控制比較容易實(shí)現(xiàn)對多租戶的支持。
下面繼續(xù)對本發(fā)明實(shí)施例一提供的去中心化資源調(diào)度方法可實(shí)現(xiàn)的功能進(jìn)行舉例說明。
舉例1:多租戶資源約束
整個(gè)計(jì)算集群作為一個(gè)服務(wù)平臺對外提供,可以在其上新建許多租戶。租戶之間可以有不同的優(yōu)先級(如普通租戶,vip租戶等),不同的優(yōu)先級租戶見資源 的使用限制不同。比如限定普通租戶最多使用10個(gè)節(jié)點(diǎn)的資源,vip租戶最多使用100個(gè)節(jié)點(diǎn)的資源。
當(dāng)普通租戶提交作業(yè)時(shí),經(jīng)過資源調(diào)度策略節(jié)點(diǎn)獲得的資源調(diào)度節(jié)點(diǎn)屬下最多只有10個(gè)節(jié)點(diǎn)。當(dāng)vip租戶提交作業(yè)時(shí),經(jīng)過資源調(diào)度策略節(jié)點(diǎn)獲得的資源調(diào)度節(jié)點(diǎn)屬下最多只有100個(gè)節(jié)點(diǎn)。這樣就可以保證vip租戶所能運(yùn)行的最大資源要比普通租戶大得多。甚至可以新建一種最高優(yōu)先級的租戶其提交作業(yè)可以使用到集群中所有節(jié)點(diǎn)的資源。而且由于資源調(diào)度節(jié)點(diǎn)屬下的節(jié)點(diǎn)數(shù)目是可以動(dòng)態(tài)增刪的,很容易就可以擴(kuò)展各租戶可用資源最大限制。
由于運(yùn)行中資源調(diào)度節(jié)點(diǎn)可能是很多個(gè),因此其所屬的節(jié)點(diǎn)很有可能存在重復(fù),即一個(gè)計(jì)算節(jié)點(diǎn)對應(yīng)多個(gè)資源調(diào)度節(jié)點(diǎn)。此時(shí)為了實(shí)現(xiàn)租戶見得資源均衡,可以讓計(jì)算節(jié)點(diǎn)的資源匯報(bào)節(jié)點(diǎn)在有空閑資源時(shí)拆分開向資源調(diào)度節(jié)點(diǎn)匯報(bào)。優(yōu)先級相同的資源調(diào)度節(jié)點(diǎn),保證其分配的資源量大致均衡,高優(yōu)先級的資源調(diào)度節(jié)點(diǎn)將比低優(yōu)先級的獲得更多的資源分配量。
舉例2:跨機(jī)房跨地域的集群部署
從整個(gè)集群的容錯(cuò)性考慮,將集群的硬件設(shè)備跨機(jī)房甚至跨地域部署,可以避免類似于停電,斷網(wǎng)等一系列的故障,提升整個(gè)集群的健壯性。
為此可以考慮集群接入節(jié)點(diǎn)部署多個(gè),作業(yè)端提交作業(yè)時(shí)輪詢這幾個(gè)接入節(jié)點(diǎn)的負(fù)載,一旦發(fā)現(xiàn)某個(gè)接入節(jié)點(diǎn)可用,且負(fù)載最小,就往該接入節(jié)點(diǎn)上提交作業(yè)。
由于接入節(jié)點(diǎn)只是用來接收作業(yè)申請,并通過資源調(diào)度策略節(jié)點(diǎn)按照一致的策略分配作業(yè)到某個(gè)資源調(diào)度節(jié)點(diǎn)。接入節(jié)點(diǎn)之間并不會(huì)相互影響,所以多個(gè)接入節(jié)點(diǎn)的引入不會(huì)對集群造成影響,且還能提升集群的接入能力。
當(dāng)一個(gè)機(jī)房發(fā)生故障后,其他機(jī)房不受影響,仍能正常提供服務(wù)。該機(jī)房節(jié)點(diǎn)中可能有運(yùn)行資源調(diào)度節(jié)點(diǎn),這些資源調(diào)度節(jié)點(diǎn)保證高可用的方法如下:資源調(diào)度策略節(jié)點(diǎn)給作業(yè)分配資源調(diào)度節(jié)點(diǎn)時(shí),同時(shí)選擇一個(gè)不在同一機(jī)房的節(jié)點(diǎn)上啟動(dòng)一個(gè)備用資源調(diào)度節(jié)點(diǎn),備用資源調(diào)度節(jié)點(diǎn)同步主資源調(diào)度節(jié)點(diǎn)中的作業(yè)狀態(tài),當(dāng)主資源調(diào)度節(jié)點(diǎn)崩潰時(shí)接管過其下所有的作業(yè),同時(shí)再向資源調(diào)度策略節(jié)點(diǎn)申請一個(gè)新的資源調(diào)度節(jié)點(diǎn)作為備用,且該備用資源調(diào)度節(jié)點(diǎn)在另外的機(jī)房節(jié)點(diǎn)上。
舉例3:固定資源調(diào)度節(jié)點(diǎn)數(shù)目的大數(shù)據(jù)計(jì)算系統(tǒng)
由于資源調(diào)度節(jié)點(diǎn)如果是系統(tǒng)運(yùn)行中動(dòng)態(tài)生成的話,將會(huì)消耗一定的節(jié)點(diǎn)啟動(dòng)時(shí)間。如果對性能要求較高時(shí),可以考慮固定資源調(diào)度節(jié)點(diǎn)的數(shù)目,并在系統(tǒng)啟動(dòng)時(shí)將所有資源調(diào)度節(jié)點(diǎn)全部運(yùn)行起來。這樣的話可以提升一些作業(yè)運(yùn)行的性能,尤其是小作業(yè)的性能。
資源調(diào)度節(jié)點(diǎn)的數(shù)目可以是通過配置文件或命令的方式設(shè)置,并能動(dòng)態(tài)生效。這樣集群硬件擴(kuò)容時(shí)可以不停服務(wù)很輕易地就實(shí)現(xiàn)集群的擴(kuò)容。
舉例4:支持多樣化的資源調(diào)度節(jié)點(diǎn)
目前的大數(shù)據(jù)集群支持的資源調(diào)度節(jié)點(diǎn)只是固定好的一個(gè),最多支持調(diào)度策略以插件的方式引入。而隨著大數(shù)據(jù)技術(shù)的發(fā)展,目前已經(jīng)出現(xiàn)了各種各樣的資源調(diào)度節(jié)點(diǎn)能夠在某些方面得到優(yōu)化。而這些多樣化地資源調(diào)度節(jié)點(diǎn)之前是無法同時(shí)運(yùn)行于一個(gè)大數(shù)據(jù)集群的?,F(xiàn)在通過資源調(diào)度節(jié)點(diǎn)動(dòng)態(tài)創(chuàng)建功能,可以將多樣化地調(diào)度節(jié)點(diǎn)同時(shí)運(yùn)行起來??蛻艨梢园凑兆约旱南埠萌ナ褂孟鄳?yīng)的資源調(diào)度節(jié)點(diǎn)。
綜上所述,本發(fā)明是要克服現(xiàn)有技術(shù)中存在的大量作業(yè)并發(fā)問題,提升集群的橫向擴(kuò)展能力和作業(yè)量擴(kuò)展能力,并盡可能提供資源的利用率,負(fù)載的均衡性。
因此,提供了一種動(dòng)態(tài)生成資源調(diào)度角色的方法,通過該角色的動(dòng)態(tài)生成,能消除作業(yè)并發(fā)容量的限制,達(dá)到比集群聯(lián)合更強(qiáng)的作業(yè)承載能力;并且由于資源調(diào)度角色是動(dòng)態(tài)生成的,所以可以根據(jù)集群實(shí)際資源總量,數(shù)據(jù)本地性,租戶特定等情況動(dòng)態(tài)調(diào)整,實(shí)現(xiàn)動(dòng)態(tài)負(fù)載均衡,性能及租戶特性等需求。
實(shí)施例二
如圖7所示,本發(fā)明實(shí)施例二提供的去中心化資源調(diào)度系統(tǒng)包括:
接收模塊71,用于利用集群接入節(jié)點(diǎn)接收作業(yè);
第一處理模塊72,用于利用資源調(diào)度策略節(jié)點(diǎn)根據(jù)當(dāng)前資源負(fù)載情況和所述作業(yè)中的作業(yè)特征和用戶特征得到對應(yīng)的資源調(diào)度節(jié)點(diǎn)信息;
第二處理模塊73,用于若不存在與所述資源調(diào)度節(jié)點(diǎn)信息相對應(yīng)的資源調(diào)度節(jié)點(diǎn),則生成所述資源調(diào)度節(jié)點(diǎn),利用所述資源調(diào)度節(jié)點(diǎn)為所述作業(yè)調(diào)度資源。
本發(fā)明實(shí)施例二提供的所述去中心化資源調(diào)度系統(tǒng)通過動(dòng)態(tài)生成資源調(diào)度節(jié)點(diǎn),能消除作業(yè)并發(fā)容量的限制,達(dá)到比集群聯(lián)合更強(qiáng)的作業(yè)承載能力;并且由于資源調(diào)度節(jié)點(diǎn)是動(dòng)態(tài)生成的,所以可以根據(jù)集群實(shí)際資源總量,數(shù)據(jù)本地性,租戶特定等情況動(dòng)態(tài)調(diào)整,實(shí)現(xiàn)動(dòng)態(tài)負(fù)載均衡,性能及租戶特性等需求,較好的解決了現(xiàn)有技術(shù)中大量作業(yè)并發(fā)的問題。
為了進(jìn)一步提高運(yùn)行性能,節(jié)省時(shí)間,所述去中心化資源調(diào)度系統(tǒng)還包括:配置模塊,用于在所述接收模塊執(zhí)行操作之前,配置預(yù)設(shè)數(shù)量預(yù)啟動(dòng)的所述資源調(diào)度節(jié)點(diǎn);啟動(dòng)模塊,用于在系統(tǒng)啟動(dòng)時(shí),啟動(dòng)配置的所述預(yù)設(shè)數(shù)量的所述資源調(diào)度節(jié)點(diǎn)。
進(jìn)一步的,所述去中心化資源調(diào)度系統(tǒng)還包括:關(guān)閉模塊,用于在所述第二處理模塊執(zhí)行操作之后,若預(yù)設(shè)時(shí)間段內(nèi)生成的所述資源調(diào)度節(jié)點(diǎn)沒有為另一作業(yè)調(diào)度資源,則自動(dòng)關(guān)閉生成的所述資源調(diào)度節(jié)點(diǎn)。
具體的,所述第一處理模塊包括:第一處理子模塊,用于根據(jù)所述作業(yè)特征得到所述作業(yè)的數(shù)據(jù)本地性較好的資源調(diào)度節(jié)點(diǎn)集合;第二處理子模塊,用于根據(jù)所述用戶特征得到資源的限制約束;第三處理子模塊,用于根據(jù)預(yù)設(shè)策略,結(jié)合所述當(dāng)前資源負(fù)載情況、資源調(diào)度節(jié)點(diǎn)集合和資源的限制約束得到對應(yīng)的資源調(diào)度節(jié)點(diǎn)信息。
其中,所述第二處理模塊包括:第四處理子模塊,用于利用所述資源調(diào)度策略節(jié)點(diǎn)隨機(jī)選取一個(gè)隸屬于所述資源調(diào)度節(jié)點(diǎn)的作業(yè)運(yùn)算節(jié)點(diǎn),并通知該作業(yè)運(yùn)算節(jié)點(diǎn)啟動(dòng)一個(gè)容器來運(yùn)行所述資源調(diào)度節(jié)點(diǎn)。
考慮到本申請中一個(gè)作業(yè)運(yùn)算節(jié)點(diǎn)可能對應(yīng)于多個(gè)資源調(diào)度節(jié)點(diǎn),本發(fā)明實(shí)施例中,所述第二處理模塊包括:第五處理子模塊,用于利用所述資源調(diào)度節(jié)點(diǎn)向資源匯報(bào)節(jié)點(diǎn)進(jìn)行注冊,并接收所述資源匯報(bào)節(jié)點(diǎn)根據(jù)預(yù)定規(guī)則(涉及各資源調(diào)度節(jié)點(diǎn)的負(fù)載、權(quán)重)匯報(bào)的空閑資源;調(diào)度子模塊,用于利用所述資源調(diào)度節(jié)點(diǎn)對作業(yè)控制節(jié)點(diǎn)根據(jù)切分的所述作業(yè)申請的資源進(jìn)行調(diào)度。
進(jìn)一步的,所述去中心化資源調(diào)度系統(tǒng)還包括:第一通知模塊,用于所述調(diào)度子模塊執(zhí)行操作之前,利用所述資源調(diào)度節(jié)點(diǎn)通知與所述空閑資源對應(yīng)的作業(yè)運(yùn)算節(jié)點(diǎn)啟動(dòng)容器運(yùn)行所述作業(yè)控制節(jié)點(diǎn)。
為了便于得到當(dāng)前資源負(fù)載情況,本發(fā)明實(shí)施例中,所述去中心化資源調(diào) 度系統(tǒng)還包括:獲取模塊,用于利用資源調(diào)度概覽節(jié)點(diǎn)實(shí)時(shí)獲取資源負(fù)載情況。
為了方案的完整性,所述去中心化資源調(diào)度系統(tǒng)還包括:第三處理模塊,用于所述第二處理模塊執(zhí)行操作之后,利用作業(yè)控制節(jié)點(diǎn)將調(diào)度的資源分配給所述作業(yè)中具體的任務(wù),并通知與調(diào)度的所述資源相對應(yīng)的作業(yè)運(yùn)算節(jié)點(diǎn)啟動(dòng)容器運(yùn)行所述任務(wù)。
進(jìn)一步的,所述去中心化資源調(diào)度系統(tǒng)還包括:第二通知模塊,用于所述第三處理模塊執(zhí)行操作之后,在所述容器中的任務(wù)執(zhí)行完畢后,利用所述作業(yè)運(yùn)算節(jié)點(diǎn)通知所述作業(yè)控制節(jié)點(diǎn)關(guān)閉所述容器。
更進(jìn)一步的,所述去中心化資源調(diào)度系統(tǒng)還包括:第四處理模塊,用于所述第二通知模塊執(zhí)行操作之后,在所述作業(yè)中的所有任務(wù)均執(zhí)行完畢后,利用所述作業(yè)控制節(jié)點(diǎn)通知所述資源調(diào)度節(jié)點(diǎn)資源釋放,并向所述資源調(diào)度節(jié)點(diǎn)申請關(guān)閉所述作業(yè)控制節(jié)點(diǎn)。
考慮到資源可能出現(xiàn)宕機(jī)的情況,所述去中心化資源調(diào)度系統(tǒng)還包括:建立模塊,用于所述第二處理模塊執(zhí)行操作之后,在所述資源重啟后,利用資源調(diào)度概覽節(jié)點(diǎn)根據(jù)所述資源的限制約束重新與對應(yīng)的所述資源調(diào)度節(jié)點(diǎn)建立關(guān)系。
具體的,所述建立模塊包括:啟動(dòng)子模塊,用于在所述資源重啟后,啟動(dòng)所述資源的作業(yè)控制節(jié)點(diǎn)和資源匯報(bào)節(jié)點(diǎn);通知子模塊,用于利用所述資源匯報(bào)節(jié)點(diǎn)通知所述資源調(diào)度概覽節(jié)點(diǎn)所述資源可用;
查找子模塊,用于利用所述資源調(diào)度概覽節(jié)點(diǎn)依據(jù)所述資源的限制約束查找到對應(yīng)的所述資源調(diào)度節(jié)點(diǎn);第六處理子模塊,用于利用所述資源調(diào)度節(jié)點(diǎn)向所述資源的資源匯報(bào)節(jié)點(diǎn)進(jìn)行注冊,并接收所述資源的資源匯報(bào)節(jié)點(diǎn)根據(jù)預(yù)定規(guī)則(涉及各資源調(diào)度節(jié)點(diǎn)的負(fù)載、權(quán)重)匯報(bào)的空閑資源。
其中,上述去中心化資源調(diào)度方法的所述實(shí)現(xiàn)實(shí)施例均適用于該去中心化資源調(diào)度系統(tǒng)的實(shí)施例中,也能達(dá)到相同的技術(shù)效果。
需要說明的是,此說明書中所描述的許多功能部件都被稱為模塊/子模塊,以便更加特別地強(qiáng)調(diào)其實(shí)現(xiàn)方式的獨(dú)立性。
本發(fā)明實(shí)施例中,模塊/子模塊可以用軟件實(shí)現(xiàn),以便由各種類型的處理器執(zhí)行。舉例來說,一個(gè)標(biāo)識的可執(zhí)行代碼模塊可以包括計(jì)算機(jī)指令的一個(gè)或多 個(gè)物理或者邏輯塊,舉例來說,其可以被構(gòu)建為對象、過程或函數(shù)。盡管如此,所標(biāo)識模塊的可執(zhí)行代碼無需物理地位于一起,而是可以包括存儲在不同位里上的不同的指令,當(dāng)這些指令邏輯上結(jié)合在一起時(shí),其構(gòu)成模塊并且實(shí)現(xiàn)該模塊的規(guī)定目的。
實(shí)際上,可執(zhí)行代碼模塊可以是單條指令或者是許多條指令,并且甚至可以分布在多個(gè)不同的代碼段上,分布在不同程序當(dāng)中,以及跨越多個(gè)存儲器設(shè)備分布。同樣地,操作數(shù)據(jù)可以在模塊內(nèi)被識別,并且可以依照任何適當(dāng)?shù)男问綄?shí)現(xiàn)并且被組織在任何適當(dāng)類型的數(shù)據(jù)結(jié)構(gòu)內(nèi)。所述操作數(shù)據(jù)可以作為單個(gè)數(shù)據(jù)集被收集,或者可以分布在不同位置上(包括在不同存儲設(shè)備上),并且至少部分地可以僅作為電子信號存在于系統(tǒng)或網(wǎng)絡(luò)上。
在模塊可以利用軟件實(shí)現(xiàn)時(shí),考慮到現(xiàn)有硬件工藝的水平,所以可以以軟件實(shí)現(xiàn)的模塊,在不考慮成本的情況下,本領(lǐng)域技術(shù)人員都可以搭建對應(yīng)的硬件電路來實(shí)現(xiàn)對應(yīng)的功能,所述硬件電路包括常規(guī)的超大規(guī)模集成(vlsi)電路或者門陣列以及諸如邏輯芯片、晶體管之類的現(xiàn)有半導(dǎo)體或者是其它分立的元件。模塊還可以用可編程硬件設(shè)備,諸如現(xiàn)場可編程門陣列、可編程陣列邏輯、可編程邏輯設(shè)備等實(shí)現(xiàn)。
以上所述的是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出對于本技術(shù)領(lǐng)域的普通人員來說,在不脫離本發(fā)明所述原理前提下,還可以作出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也應(yīng)視為本發(fā)明的保護(hù)范圍。