本申請屬于數(shù)據(jù)處理技術(shù)領(lǐng)域,具體地說,涉及一種作業(yè)調(diào)度方法、裝置及分布式系統(tǒng)。
背景技術(shù):
在傳統(tǒng)的分布式系統(tǒng)中,分布式作業(yè)包括有限數(shù)量的任務(wù)(task),并且任務(wù)之間有一定的依賴關(guān)系,每一任務(wù)又劃分為多個(gè)任務(wù)切片(instance),作業(yè)運(yùn)行時(shí),由各個(gè)任務(wù)的任務(wù)切片進(jìn)行數(shù)據(jù)處理。
基于傳統(tǒng)的分布式系統(tǒng),作業(yè)調(diào)度方式通常是由中心節(jié)點(diǎn)(master),進(jìn)行統(tǒng)一調(diào)度,例如,假設(shè)作業(yè)有兩個(gè)任務(wù),分別為task1和task2,task1和task2的依賴關(guān)系為task2的輸入為task1的輸出,當(dāng)作業(yè)運(yùn)行起來之后,中心節(jié)點(diǎn)會尋找一個(gè)沒有前驅(qū)任務(wù)的任務(wù),假設(shè)為task1先運(yùn)行起來,當(dāng)task1的全部任務(wù)切片運(yùn)行結(jié)束之后,中心節(jié)點(diǎn)再調(diào)度task2運(yùn)行。
但是,這種作業(yè)調(diào)度方式,中心節(jié)點(diǎn)處理和維護(hù)的數(shù)據(jù)量巨大,影響調(diào)度效率,且沒有充分的利用集群資源,導(dǎo)致資源浪費(fèi)。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本申請所要解決的技術(shù)問題是提供了作業(yè)調(diào)度方法、裝置及分布式系統(tǒng),提高了調(diào)度效率,且提高了資源利用率。
為了解決上述技術(shù)問題,本申請公開了一種作業(yè)調(diào)度方法,應(yīng)用于分布式系統(tǒng)中,所述分布式系統(tǒng)至少包括中心節(jié)點(diǎn)、與所述中心節(jié)點(diǎn)連接的多個(gè)控制節(jié)點(diǎn)以及每一控制節(jié)點(diǎn)分別連接的多個(gè)計(jì)算節(jié)點(diǎn);所述中心節(jié)點(diǎn)為各個(gè)控制節(jié)點(diǎn)分配所述作業(yè)的任務(wù);所述控制節(jié)點(diǎn)調(diào)度為其分配的任務(wù)的各個(gè)任 務(wù)切片在與其連接的計(jì)算節(jié)點(diǎn)中運(yùn)行,所述方法包括:
調(diào)度第一任務(wù)的第一控制節(jié)點(diǎn)在所述第一任務(wù)的至少一個(gè)任務(wù)切片運(yùn)行結(jié)束時(shí),通知調(diào)度第二任務(wù)的第二控制節(jié)點(diǎn)獲取所述第一任務(wù)的至少一個(gè)任務(wù)切片生成的運(yùn)行數(shù)據(jù);其中,所述第一任務(wù)為所述作業(yè)中任一運(yùn)行的任務(wù);所述第二任務(wù)為所述作業(yè)中依賴所述第一任務(wù)的任一任務(wù);
所述第二控制節(jié)點(diǎn)獲取所述第一任務(wù)的至少一個(gè)任務(wù)切片生成的運(yùn)行數(shù)據(jù),并分配給所述第二任務(wù)的每一個(gè)任務(wù)切片;
所述第二控制節(jié)點(diǎn)調(diào)度所述第二任務(wù)的至少一個(gè)任務(wù)切片運(yùn)行,處理所述運(yùn)行數(shù)據(jù)。
優(yōu)選地,所述第二控制節(jié)點(diǎn)調(diào)度所述第二任務(wù)的至少一個(gè)任務(wù)切片運(yùn)行,處理所述運(yùn)行數(shù)據(jù)包括:
調(diào)度所述第二任務(wù)中,需求數(shù)據(jù)版本與所述運(yùn)行數(shù)據(jù)版本匹配的任務(wù)切片運(yùn)行,處理所述運(yùn)行數(shù)據(jù)。
優(yōu)選地,在所述第二任務(wù)中的第一任務(wù)切片的需求數(shù)據(jù)版本與所述運(yùn)行數(shù)據(jù)不匹配時(shí),所述方法還包括:
所述第二控制節(jié)點(diǎn)請求所述第一控制節(jié)點(diǎn)調(diào)度所述第一任務(wù)中所述運(yùn)行數(shù)據(jù)版本對應(yīng)的任務(wù)切片重新運(yùn)行;
所述第一控制節(jié)點(diǎn)調(diào)度所述第一任務(wù)中所述運(yùn)行數(shù)據(jù)版本對應(yīng)的任務(wù)切片重新運(yùn)行,并在重新運(yùn)行結(jié)束之后,通知所述第二控制節(jié)點(diǎn)獲取所述重新生成的運(yùn)行數(shù)據(jù);
所述第二控制節(jié)點(diǎn)獲取所述重新生成的運(yùn)行數(shù)據(jù),并在所述重新生成的運(yùn)行數(shù)據(jù)版本與所述第一任務(wù)切片的需求數(shù)據(jù)版本匹配時(shí),調(diào)度所述第一任務(wù)切片運(yùn)行;否則請求所述第一控制節(jié)點(diǎn)調(diào)度所述第一任務(wù)中所述運(yùn)行數(shù)據(jù)版本對應(yīng)的任務(wù)切片重新運(yùn)行,直至重新生成的運(yùn)行數(shù)據(jù)版本與所述第一任務(wù)切片的需求數(shù)據(jù)版本匹配。
優(yōu)選地,所述第二控制節(jié)點(diǎn)調(diào)度所述第二任務(wù)的任一任務(wù)切片運(yùn)行,處理所述運(yùn)行數(shù)據(jù)之后,所述方法還包括:
所述第二控制節(jié)點(diǎn)在所述第二任務(wù)中的第二任務(wù)切片處理所述運(yùn)行數(shù) 據(jù)失敗時(shí),請求所述第一控制節(jié)點(diǎn)調(diào)度所述第一任務(wù)中,所述運(yùn)行數(shù)據(jù)版本對應(yīng)的任務(wù)切片重新運(yùn)行;
所述第一控制節(jié)點(diǎn)調(diào)度所述第一任務(wù)中,所述運(yùn)行數(shù)據(jù)版本對應(yīng)的任務(wù)切片重新運(yùn)行;并在所述第一任務(wù)中所述運(yùn)行數(shù)據(jù)版本對應(yīng)的任務(wù)切片重新運(yùn)行結(jié)束之后,通知所述第二控制節(jié)點(diǎn)獲取重新生成的運(yùn)行數(shù)據(jù);
所述第二控制節(jié)點(diǎn)獲取所述重新生成的運(yùn)行數(shù)據(jù),并調(diào)度所述第二任務(wù)的所述第二任務(wù)切片運(yùn)行,處理所述重新生成的運(yùn)行數(shù)據(jù)。
優(yōu)選地,所述第二控制節(jié)點(diǎn)請求所述第一控制節(jié)點(diǎn)調(diào)度所述第一任務(wù)中所述運(yùn)行數(shù)據(jù)版本對應(yīng)的任務(wù)切片重新運(yùn)行包括:
所述第二控制節(jié)點(diǎn)通過提高需求數(shù)據(jù)版本,請求所述第一控制節(jié)點(diǎn)調(diào)度所述第一任務(wù)中所述運(yùn)行數(shù)據(jù)版本對應(yīng)的任務(wù)切片重新運(yùn)行。
一種分布式系統(tǒng),包括一中心節(jié)點(diǎn)、與所述中心節(jié)點(diǎn)連接的多個(gè)控制節(jié)點(diǎn)以及每一個(gè)控制節(jié)點(diǎn)連接的多個(gè)計(jì)算節(jié)點(diǎn);
所述中心節(jié)點(diǎn),用于為各個(gè)控制節(jié)點(diǎn)分配作業(yè)的任務(wù);
所述計(jì)算節(jié)點(diǎn),用于運(yùn)行與其連接的控制節(jié)點(diǎn)分配的任務(wù)切片;
所述控制節(jié)點(diǎn)中的第一控制節(jié)點(diǎn),用于在為其分配的第一任務(wù)的至少一個(gè)任務(wù)切片運(yùn)行結(jié)束時(shí),通知調(diào)度第二任務(wù)的第二控制節(jié)點(diǎn)獲取所述第一任務(wù)的至少一個(gè)任務(wù)切片運(yùn)行生成的運(yùn)行數(shù)據(jù);其中,所述第一任務(wù)為所述作業(yè)中任一運(yùn)行的任務(wù);所述第二任務(wù)為所述作業(yè)中依賴所述第一任務(wù)的任一任務(wù);
所述第二控制節(jié)點(diǎn),用于獲取所述第一任務(wù)的至少一個(gè)任務(wù)切片運(yùn)行生成的運(yùn)行數(shù)據(jù),并分配給所述第二任務(wù)的每一個(gè)任務(wù)切片;調(diào)度所述第二任務(wù)的至少一個(gè)任務(wù)切片運(yùn)行,處理所述運(yùn)行數(shù)據(jù)。
優(yōu)選地,所述第二控制節(jié)點(diǎn)調(diào)度所述第二任務(wù)的每一個(gè)任務(wù)切片運(yùn)行,處理所述運(yùn)行數(shù)據(jù)包括:
調(diào)度所述第二任務(wù)中,需求數(shù)據(jù)版本與所述運(yùn)行數(shù)據(jù)版本匹配的任務(wù)切片運(yùn)行,處理所述運(yùn)行數(shù)據(jù)。
優(yōu)選地,所述第二控制節(jié)點(diǎn)還用于:
在所述第二任務(wù)中的第一任務(wù)切片的需求數(shù)據(jù)版本與所述運(yùn)行數(shù)據(jù)不匹配時(shí),請求所述第一控制節(jié)點(diǎn)調(diào)度所述第一任務(wù)中所述運(yùn)行數(shù)據(jù)版本對應(yīng)的任務(wù)切片重新運(yùn)行;獲取所述第一控制節(jié)點(diǎn)重新生成的運(yùn)行數(shù)據(jù)版本,并在所述重新生成的運(yùn)行數(shù)據(jù)版本與所述第一任務(wù)切片的需求數(shù)據(jù)版本匹配時(shí),調(diào)度所述第一任務(wù)切片運(yùn)行;否則請求所述第一控制節(jié)點(diǎn)調(diào)度所述第一任務(wù)中所述運(yùn)行數(shù)據(jù)版本對應(yīng)的任務(wù)切片重新運(yùn)行,直至重新生成的運(yùn)行數(shù)據(jù)版本與所述第一任務(wù)切片的需求數(shù)據(jù)版本匹配;
所述第一控制節(jié)點(diǎn)還用于接收到所述第二控制節(jié)點(diǎn)的請求時(shí),調(diào)度所述第一任務(wù)中所述運(yùn)行數(shù)據(jù)版本對應(yīng)的任務(wù)切片重新運(yùn)行;在所述第一任務(wù)中所述運(yùn)行數(shù)據(jù)版本對應(yīng)的任務(wù)切片重新運(yùn)行結(jié)束之后,通知所述第二控制節(jié)點(diǎn)獲取重新生成的運(yùn)行數(shù)據(jù)。
優(yōu)選地,所述第二控制節(jié)點(diǎn)還用于:在所述第二任務(wù)中的第二任務(wù)切片處理所述運(yùn)行數(shù)據(jù)失敗時(shí),請求所述第一控制節(jié)點(diǎn)調(diào)度所述第一任務(wù)中,所述運(yùn)行數(shù)據(jù)版本對應(yīng)的任務(wù)切片重新運(yùn)行;獲取重新生成的運(yùn)行數(shù)據(jù)版本,并調(diào)度所述第二任務(wù)的任務(wù)切片運(yùn)行,處理所述重新運(yùn)行的數(shù)據(jù)版本;
所述第一控制節(jié)點(diǎn),還用于接收到所述第二控制節(jié)點(diǎn)的請求時(shí),調(diào)度所述第一任務(wù)中,所述運(yùn)行數(shù)據(jù)版本對應(yīng)的任務(wù)切片重新運(yùn)行;在所述第一任務(wù)中所述運(yùn)行數(shù)據(jù)版本對應(yīng)的任務(wù)切片重新運(yùn)行結(jié)束之后,通知所述第二控制節(jié)點(diǎn)獲取所述重新生成的運(yùn)行數(shù)據(jù)。
優(yōu)選地,所述第二控制節(jié)點(diǎn)請求所述第一控制節(jié)點(diǎn)調(diào)度所述第一任務(wù)中,所述運(yùn)行數(shù)據(jù)版本對應(yīng)的任務(wù)切片重新運(yùn)行具體是:
通過提高需求數(shù)據(jù)版本,請求所述第一控制節(jié)點(diǎn)調(diào)度所述第一任務(wù)中所述運(yùn)行數(shù)據(jù)版本對應(yīng)的任務(wù)切片重新運(yùn)行。
一種作業(yè)調(diào)度裝置,應(yīng)用于分布式系統(tǒng)的控制節(jié)點(diǎn)中,所述分布式系統(tǒng)至少包括中心節(jié)點(diǎn)、與中心節(jié)點(diǎn)連接的多個(gè)控制節(jié)點(diǎn)以及每一個(gè)控制節(jié)點(diǎn)分別連接的多個(gè)計(jì)算節(jié)點(diǎn);所述控制節(jié)點(diǎn)獲取所述中心節(jié)點(diǎn)分配的所述作業(yè)的一任務(wù),并調(diào)度所述任務(wù)的各個(gè)任務(wù)切片在與其連接的計(jì)算節(jié)點(diǎn)中運(yùn)行,所述裝置包括:
通知模塊,用于在第一任務(wù)的至少一個(gè)任務(wù)切片運(yùn)行結(jié)束時(shí),通知調(diào)度第二任務(wù)的控制節(jié)點(diǎn)獲取所述第一任務(wù)的至少一個(gè)任務(wù)切片運(yùn)行生成的運(yùn)行數(shù)據(jù);以便于所述調(diào)度第二任務(wù)的控制節(jié)點(diǎn)將獲取的所述運(yùn)行數(shù)據(jù),分配給所述第二任務(wù)的每一個(gè)任務(wù)切片;調(diào)度所述第二任務(wù)的每一個(gè)任務(wù)切片運(yùn)行,處理所述運(yùn)行數(shù)據(jù);
其中,所述第一任務(wù)為所述作業(yè)中任一運(yùn)行的任務(wù);所述第二任務(wù)為所述作業(yè)中依賴所述第一任務(wù)的任一任務(wù)。
一種作業(yè)調(diào)度裝置,應(yīng)用于分布式系統(tǒng)的控制節(jié)點(diǎn)中,所述分布式系統(tǒng)至少包括中心節(jié)點(diǎn)、與中心節(jié)點(diǎn)連接的多個(gè)控制節(jié)點(diǎn)以及每一個(gè)控制節(jié)點(diǎn)分別連接的多個(gè)計(jì)算節(jié)點(diǎn);所述控制節(jié)點(diǎn)獲取所述中心節(jié)點(diǎn)分配的所述作業(yè)的一任務(wù),并調(diào)度所述任務(wù)的各個(gè)任務(wù)切片在與其連接的計(jì)算節(jié)點(diǎn)中運(yùn)行,所述裝置包括:
獲取模塊,用于接收到調(diào)度第一任務(wù)的控制節(jié)點(diǎn)的通知時(shí),獲取所述第一任務(wù)的至少一個(gè)任務(wù)切片運(yùn)行生成的運(yùn)行數(shù)據(jù);其中,所述通知為所述調(diào)度第一任務(wù)的控制節(jié)點(diǎn)在所述第一任務(wù)的至少一個(gè)任務(wù)切片運(yùn)行結(jié)束之后發(fā)送的;所述第一任務(wù)為所述作業(yè)中任一運(yùn)行的任務(wù);所述第二任務(wù)為所述作業(yè)中依賴所述第一任務(wù)的任一任務(wù);
分配模塊,用于將獲取的所述第一任務(wù)的至少一個(gè)任務(wù)切片生成的運(yùn)行數(shù)據(jù),分配給所述第二任務(wù)的每一個(gè)任務(wù)切片;
調(diào)度模塊,用于調(diào)度所述第二任務(wù)的至少一個(gè)任務(wù)切片運(yùn)行,處理所述運(yùn)行數(shù)據(jù)。
與現(xiàn)有技術(shù)相比,本申請可以獲得包括以下技術(shù)效果:
本申請?zhí)峁┑姆植际较到y(tǒng),由中心節(jié)點(diǎn)、控制節(jié)點(diǎn)以及計(jì)算節(jié)點(diǎn)組成,中心節(jié)點(diǎn)進(jìn)行任務(wù)分配,控制節(jié)點(diǎn)負(fù)責(zé)任務(wù)調(diào)度,從而降低了中心節(jié)點(diǎn)的調(diào)度壓力,提高了調(diào)度效率。在進(jìn)行作業(yè)調(diào)度時(shí),在作業(yè)中的第一任務(wù)的至少一個(gè)任務(wù)切片運(yùn)行結(jié)束之后,即可以調(diào)度第二任務(wù)的至少一個(gè)任務(wù)切片運(yùn)行,對運(yùn)行數(shù)據(jù)進(jìn)行處理,無需等待第一任務(wù)的全部任務(wù)切片運(yùn)行結(jié)束,第二任務(wù)的任務(wù)切片即可以調(diào)度運(yùn)行進(jìn)行數(shù)據(jù)處理,充分利用了集群資源,提 高了資源利用率和任務(wù)并發(fā)度,降低了作業(yè)運(yùn)行時(shí)間。
當(dāng)然,實(shí)施本申請的任一產(chǎn)品必不一定需要同時(shí)達(dá)到以上所述的所有技術(shù)效果。
附圖說明
此處所說明的附圖用來提供對本申請的進(jìn)一步理解,構(gòu)成本申請的一部分,本申請的示意性實(shí)施例及其說明用于解釋本申請,并不構(gòu)成對本申請的不當(dāng)限定。在附圖中:
圖1是本申請實(shí)施例的分布式系統(tǒng)的一種結(jié)構(gòu)示意圖;
圖2是本申請實(shí)施例的一種作業(yè)調(diào)度方法一個(gè)實(shí)施例流程圖;
圖3是本申請實(shí)施例的一種作業(yè)調(diào)度方法又一個(gè)實(shí)施例流程圖;
圖4是本申請實(shí)施例的一種作業(yè)調(diào)度方法又一個(gè)實(shí)施例流程圖;
圖5是本申請實(shí)施例的一種作業(yè)調(diào)度方法又一個(gè)實(shí)施例流程圖;
圖6是本申請實(shí)施例的實(shí)際應(yīng)用中任務(wù)依賴關(guān)系的一種示意圖;
圖7是本申請實(shí)施例的一種作業(yè)調(diào)度裝置一個(gè)實(shí)施例結(jié)構(gòu)示意圖;
圖8是本申請實(shí)施例的一種作業(yè)調(diào)度裝置另一個(gè)實(shí)施例結(jié)構(gòu)示意圖;
圖9是本申請實(shí)施例的一種作業(yè)調(diào)度裝置又一個(gè)實(shí)施例結(jié)構(gòu)示意圖;
圖10是本申請實(shí)施例的一種作業(yè)調(diào)度裝置又一個(gè)實(shí)施例結(jié)構(gòu)示意圖。
具體實(shí)施方式
以下將配合附圖及實(shí)施例來詳細(xì)說明本申請的實(shí)施方式,藉此對本申請如何應(yīng)用技術(shù)手段來解決技術(shù)問題并達(dá)成技術(shù)功效的實(shí)現(xiàn)過程能充分理解并據(jù)以實(shí)施。
在一個(gè)典型的配置中,計(jì)算設(shè)備包括一個(gè)或多個(gè)處理器(CPU)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。
內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲器,隨機(jī)存取存儲器(RAM)和/或非易失性內(nèi)存等形式,如只讀存儲器(ROM)或閃存(flash RAM)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。
計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術(shù)來實(shí)現(xiàn)信息存儲。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲介質(zhì)的例子包括,但不限于相變內(nèi)存(PRAM)、靜態(tài)隨機(jī)存取存儲器(SRAM)、動態(tài)隨機(jī)存取存儲器(DRAM)、其他類型的隨機(jī)存取存儲器(RAM)、只讀存儲器(ROM)、電可擦除可編程只讀存儲器(EEPROM)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲器(CD-ROM)、數(shù)字多功能光盤(DVD)或其他光學(xué)存儲、磁盒式磁帶,磁帶磁磁盤存儲或其他磁性存儲設(shè)備或任何其他非傳輸介質(zhì),可用于存儲可以被計(jì)算設(shè)備訪問的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括非暫存電腦可讀媒體(transitory media),如調(diào)制的數(shù)據(jù)信號和載波。
在現(xiàn)有技術(shù)中,進(jìn)行作業(yè)調(diào)度時(shí),由中心節(jié)點(diǎn)進(jìn)行統(tǒng)一調(diào)度,中心節(jié)點(diǎn)需要控制作業(yè)中一個(gè)任務(wù)的全部任務(wù)切片運(yùn)行結(jié)束之后,再調(diào)度依賴前一個(gè)任務(wù)的另一個(gè)任務(wù)的任務(wù)切片運(yùn)行,中心節(jié)點(diǎn)統(tǒng)一管控的方式導(dǎo)致中心節(jié)點(diǎn)的數(shù)據(jù)信息量巨大,特別是作業(yè)規(guī)模上升的一定程度,中心節(jié)點(diǎn)的信息量爆棚,嚴(yán)重影響調(diào)度效率。且作業(yè)的各個(gè)任務(wù)運(yùn)行時(shí),需要具有依賴關(guān)系的前一個(gè)任務(wù)的任務(wù)切片全部運(yùn)行結(jié)束之后,才能調(diào)度后一個(gè)任務(wù)的任務(wù)切片運(yùn)行,這就導(dǎo)致集群資源可能存在空余,從而導(dǎo)致資源的浪費(fèi)。
為了解決這一技術(shù)問題,本申請實(shí)施例提供了一種分布式系統(tǒng),如圖1所示。
該分布式系統(tǒng)由中心節(jié)點(diǎn)101、與該中心節(jié)點(diǎn)連接的多個(gè)控制節(jié)點(diǎn)102以及每一控制節(jié)點(diǎn)102連接的多個(gè)計(jì)算節(jié)點(diǎn)103構(gòu)成。
中心節(jié)點(diǎn)102為各個(gè)控制節(jié)點(diǎn)分配所述作業(yè)的任務(wù)。
控制節(jié)點(diǎn)103調(diào)度為其分配的任務(wù)的各個(gè)任務(wù)切片在與其連接的計(jì)算節(jié)點(diǎn)中運(yùn)行。
計(jì)算節(jié)點(diǎn)103運(yùn)行與其連接的控制節(jié)點(diǎn)分配的任務(wù)切片;
當(dāng)作業(yè)的任務(wù)數(shù)量大于控制節(jié)點(diǎn)數(shù)量時(shí),中心節(jié)點(diǎn)可以先分配一部分任 務(wù)給各個(gè)控制節(jié)點(diǎn),當(dāng)存在處理資源空閑的控制節(jié)點(diǎn)時(shí),再分配其他未分配的任務(wù)。
每一個(gè)控制節(jié)點(diǎn)控制所述作業(yè)的一個(gè)任務(wù)的運(yùn)行。
通過本申請實(shí)施例,由控制節(jié)點(diǎn)實(shí)現(xiàn)對作業(yè)的任務(wù)的調(diào)度,無需中心節(jié)點(diǎn)進(jìn)行統(tǒng)一調(diào)度,降低了中心節(jié)點(diǎn)的調(diào)度壓力,從而可以提高調(diào)度效率。且通過控制節(jié)點(diǎn)的調(diào)度,在作業(yè)中的第一任務(wù)的至少一個(gè)任務(wù)切片運(yùn)行結(jié)束之后,即可以調(diào)度第二任務(wù)的任務(wù)切片運(yùn)行,對運(yùn)行數(shù)據(jù)進(jìn)行處理,無需等待第一任務(wù)的全部任務(wù)切片運(yùn)行結(jié)束,第二任務(wù)的任務(wù)切片即可以調(diào)度運(yùn)行進(jìn)行數(shù)據(jù)處理,充分利用了集群資源,避免了資源的浪費(fèi)。本申請實(shí)施例的分布式系統(tǒng),通過控制節(jié)點(diǎn)之間的交互,只要任一個(gè)任務(wù)中的任一個(gè)任務(wù)切片運(yùn)行結(jié)束,即可以調(diào)度依賴該任務(wù)的下一個(gè)任務(wù)中任務(wù)切片開始運(yùn)行,無需一直處于等待狀態(tài),使得提高了資源利用率和任務(wù)并發(fā)度,降低作業(yè)運(yùn)行時(shí)間。
下面將結(jié)合附圖對本申請技術(shù)方案進(jìn)行詳細(xì)描述。
圖2為本申請實(shí)施例提供的一種作業(yè)調(diào)度方法一個(gè)實(shí)施例的流程圖,該技術(shù)方案具體應(yīng)用于圖1所示的分布式系統(tǒng)中,該方法可以包括以下幾個(gè)步驟:
201:調(diào)度第一任務(wù)的第一控制節(jié)點(diǎn)在所述第一任務(wù)的至少一個(gè)任務(wù)切片運(yùn)行結(jié)束時(shí),通知調(diào)度第二任務(wù)的第二控制節(jié)點(diǎn)獲取所述第一任務(wù)的至少一個(gè)任務(wù)切片生成的運(yùn)行數(shù)據(jù)。
其中,所述第一任務(wù)為所述作業(yè)中任一運(yùn)行的任務(wù);所述第二任務(wù)為所述作業(yè)中依賴所述第一任務(wù)的任一任務(wù)。
第一控制節(jié)點(diǎn)是指調(diào)度第一任務(wù)的控制節(jié)點(diǎn),第二控制節(jié)點(diǎn)是指調(diào)度第二任務(wù)的控制節(jié)點(diǎn)。第一任務(wù)以及第二任務(wù)分配給哪一個(gè)控制節(jié)點(diǎn)進(jìn)行調(diào)度是由中心節(jié)點(diǎn)預(yù)先分配。
本申請實(shí)施例中,任務(wù)切片運(yùn)行具體即是指在控制節(jié)點(diǎn)控制任務(wù)切片在計(jì)算節(jié)點(diǎn)中運(yùn)行,為了方便描述,在本申請實(shí)施例中,均以任務(wù)切片運(yùn)行進(jìn) 行描述。
本申請適用于作業(yè)中各個(gè)任務(wù)具有依賴關(guān)系的應(yīng)用場景,例如DAG(Directed Acyclic Graph,有限無環(huán)圖)模型,前一個(gè)任務(wù)的輸出數(shù)據(jù),為下一個(gè)任務(wù)的輸入數(shù)據(jù)。
第一任務(wù)可以是作業(yè)中任一個(gè)正在運(yùn)行的任務(wù)。
依賴該第一任務(wù)的任務(wù)可能有多個(gè),第二任務(wù)可以是指依賴該第一任務(wù)的任一個(gè)任務(wù)。
需要說明的是,第一任務(wù)中的“第一”、第二任務(wù)中的“第二”,并不是表示順序關(guān)系,其僅是為了描述上區(qū)分不同的任務(wù)。
第一任務(wù)中的每一任務(wù)切片運(yùn)行結(jié)束,生成的運(yùn)行數(shù)據(jù),第一控制節(jié)點(diǎn)會通知第二控制節(jié)點(diǎn)獲取該運(yùn)行數(shù)據(jù)。
202:第二控制節(jié)點(diǎn)獲取所述第一任務(wù)的至少一個(gè)任務(wù)切片生成的運(yùn)行數(shù)據(jù),并分配給所述第二任務(wù)的每一個(gè)任務(wù)切片。
第二控制節(jié)點(diǎn)接收到第一控制節(jié)點(diǎn)的通知之后,獲取第一控制節(jié)點(diǎn)中,第一任務(wù)的至少一個(gè)任務(wù)切片生成的運(yùn)行數(shù)據(jù),并分配給所述第二任務(wù)的每一個(gè)任務(wù)切片
203:第二控制節(jié)點(diǎn)調(diào)度所述第二任務(wù)的至少一個(gè)任務(wù)切片運(yùn)行,處理所述運(yùn)行數(shù)據(jù)。
在第一任務(wù)的至少一個(gè)任務(wù)切片運(yùn)行結(jié)束之后,第二控制節(jié)點(diǎn)獲取其生成的運(yùn)行數(shù)據(jù),分配給第二任務(wù)的任務(wù)切片,即可以調(diào)度第二任務(wù)的任務(wù)切片運(yùn)行,處理所述運(yùn)行數(shù)據(jù)。
本申請實(shí)施例,在作業(yè)中的第一任務(wù)的至少一個(gè)任務(wù)切片運(yùn)行結(jié)束之后,第一控制節(jié)點(diǎn)會通知第二控制節(jié)點(diǎn),第二控制節(jié)點(diǎn)即可以調(diào)度第二任務(wù)的任務(wù)切片運(yùn)行,對運(yùn)行數(shù)據(jù)進(jìn)行處理,無需等待第一任務(wù)的全部任務(wù)切片運(yùn)行結(jié)束,第二任務(wù)的任務(wù)切片即可以調(diào)度運(yùn)行進(jìn)行數(shù)據(jù)處理,充分利用了集群資源,避免了資源的浪費(fèi)。且調(diào)度過程由控制節(jié)點(diǎn)控制實(shí)現(xiàn),無需中心節(jié)點(diǎn)進(jìn)行統(tǒng)一調(diào)度,中心節(jié)點(diǎn)只負(fù)責(zé)任務(wù)的分配,從而減輕了中心節(jié)點(diǎn)的調(diào)度壓力,可以提高調(diào)度效率。
其中,由于任務(wù)切片對應(yīng)的計(jì)算節(jié)點(diǎn)處理資源不足或者其他影響正常運(yùn)行的條件,任務(wù)切片也不會運(yùn)行成功。
因此第二控制節(jié)點(diǎn)調(diào)度所述第二任務(wù)的至少一個(gè)任務(wù)切片運(yùn)行,處理所述運(yùn)行數(shù)據(jù),可以是調(diào)度所述第二任務(wù)中的處理資源滿足預(yù)設(shè)條件的任務(wù)切片,處理所述運(yùn)行數(shù)據(jù)。
對于處理資源未滿足預(yù)設(shè)條件的任務(wù)切片,可以等待其處理資源滿足預(yù)設(shè)條件時(shí),再調(diào)度運(yùn)行。
另外,由于第一任務(wù)的任務(wù)切片的運(yùn)行數(shù)據(jù)版本,與第二任務(wù)的任務(wù)切片的需求數(shù)據(jù)版本不一致時(shí),第二任務(wù)的任務(wù)切片也無法運(yùn)行。
其中,數(shù)據(jù)版本與任務(wù)切片每運(yùn)行一次得到的數(shù)據(jù)對應(yīng)的運(yùn)行次數(shù)對應(yīng),例如第一次運(yùn)行結(jié)束得到的數(shù)據(jù)版本即為0、在重新運(yùn)行時(shí),第二次運(yùn)行結(jié)束得到數(shù)據(jù)版本為1,依次類推,第三次運(yùn)行結(jié)束得到數(shù)據(jù)版本為2......
作為又一個(gè)實(shí)施例,如圖3所示,為本申請實(shí)施例提供的一種作業(yè)調(diào)度方法又一個(gè)實(shí)施例的流程圖,該方法可以包括以下幾個(gè)步驟:
301:調(diào)度第一任務(wù)的第一控制節(jié)點(diǎn)在所述第一任務(wù)的至少一個(gè)任務(wù)切片運(yùn)行結(jié)束時(shí),通知調(diào)度第二任務(wù)的第二控制節(jié)點(diǎn)獲取所述第一任務(wù)的至少一個(gè)任務(wù)切片生成的運(yùn)行數(shù)據(jù)。
其中,所述第一任務(wù)為所述作業(yè)中任一運(yùn)行的任務(wù);所述第二任務(wù)為所述作業(yè)中依賴所述第一任務(wù)的任一任務(wù)。
302:第二控制節(jié)點(diǎn)獲取所述第一任務(wù)的至少一個(gè)任務(wù)切片生成的運(yùn)行數(shù)據(jù),并分配給所述第二任務(wù)的每一個(gè)任務(wù)切片。
303:第二控制節(jié)點(diǎn)調(diào)度所述第二任務(wù)中,需求數(shù)據(jù)版本與所述運(yùn)行數(shù)據(jù)版本匹配的任務(wù)切片運(yùn)行,處理所述運(yùn)行數(shù)據(jù)。
也即第一任務(wù)的該至少一個(gè)任務(wù)切片的運(yùn)行數(shù)據(jù)版本,與第二任務(wù)的任務(wù)切片的需求數(shù)據(jù)版本匹配時(shí),第二控制節(jié)點(diǎn)才可以調(diào)度所述第二任務(wù)的任務(wù)切片運(yùn)行,處理所述運(yùn)行數(shù)據(jù)。其中,由于處理資源的不足也會影響任務(wù)切片的運(yùn)行,因此具體的是調(diào)度第二任務(wù)中,處理資源滿足預(yù)設(shè)條件,且需 求數(shù)據(jù)版本與所述運(yùn)行數(shù)據(jù)版本匹配的任務(wù)切片運(yùn)行,處理所述運(yùn)行數(shù)據(jù)。
另外,如果第一任務(wù)的所述至少一個(gè)任務(wù)切片的運(yùn)行數(shù)據(jù)版本,與第二任務(wù)的某一個(gè)任務(wù)切片,假設(shè)為第一任務(wù)切片的需求數(shù)據(jù)版本不匹配時(shí),則本申請實(shí)施例中,第二控制節(jié)點(diǎn)還可以請求第一控制節(jié)點(diǎn),調(diào)度第一任務(wù)中,所述運(yùn)行數(shù)據(jù)版本對應(yīng)的任務(wù)切片重新運(yùn)行。
第一控制節(jié)點(diǎn)接收到第二控制節(jié)點(diǎn)的請求之后,即調(diào)度所述第一任務(wù)中所述運(yùn)行數(shù)據(jù)版本對應(yīng)的任務(wù)切片重新運(yùn)行,并在重新運(yùn)行結(jié)束之后,通知所述第二控制節(jié)點(diǎn)獲取所述重新生成的運(yùn)行數(shù)據(jù);
第二控制節(jié)點(diǎn)接收到第一控制節(jié)點(diǎn)的通知之后,獲取重新生成的運(yùn)行數(shù)據(jù),并在所述重新生成的運(yùn)行數(shù)據(jù)版本與所述第一任務(wù)切片的需求數(shù)據(jù)版本匹配時(shí),調(diào)度所述第二任務(wù)的第一任務(wù)切片運(yùn)行;否則請求所述第一控制節(jié)點(diǎn)調(diào)度所述第一任務(wù)中所述運(yùn)行數(shù)據(jù)版本對應(yīng)的任務(wù)切片重新運(yùn)行,直至重新生成的運(yùn)行數(shù)據(jù)版本與所述第一任務(wù)切片的需求數(shù)據(jù)版本匹配。
因此,作為又一個(gè)實(shí)施例,如圖4所示,在本申請實(shí)施例提供的一種作業(yè)調(diào)度方法又一個(gè)實(shí)施例的中,該方法可以包括以下幾個(gè)步驟:
401:調(diào)度第一任務(wù)的第一控制節(jié)點(diǎn)在所述第一任務(wù)的至少一個(gè)任務(wù)切片運(yùn)行結(jié)束時(shí),通知調(diào)度第二任務(wù)的第二控制節(jié)點(diǎn)獲取所述第一任務(wù)的至少一個(gè)任務(wù)切片生成的運(yùn)行數(shù)據(jù)。
其中,所述第一任務(wù)為所述作業(yè)中任一運(yùn)行的任務(wù);所述第二任務(wù)為所述作業(yè)中依賴所述第一任務(wù)的任一任務(wù)。
所述第一任務(wù)的第一任務(wù)切片是指第一任務(wù)中的任一個(gè)任務(wù)切片、
402:第二控制節(jié)點(diǎn)獲取所述第一任務(wù)的至少一個(gè)任務(wù)切片生成的運(yùn)行數(shù)據(jù),并分配給所述第二任務(wù)的每一個(gè)任務(wù)切片。
403:第二控制節(jié)點(diǎn)判斷所述第二任務(wù)的第一任務(wù)切片的需求數(shù)據(jù)版本是否與所述第一任務(wù)的第一任務(wù)切片的運(yùn)行數(shù)據(jù)版本匹配;如果是,執(zhí)行步驟409,如果否,執(zhí)行步驟404。
其中,第二任務(wù)的第一任務(wù)切片可以是指第二任務(wù)中的任一個(gè)任務(wù)切 片。
第一任務(wù)的第一任務(wù)切片可以是指第一任務(wù)中已經(jīng)運(yùn)行結(jié)束的任一個(gè)任務(wù)切片。
404:第二控制節(jié)點(diǎn)請求所述第一控制節(jié)點(diǎn)調(diào)度所述第一任務(wù)的第一運(yùn)任務(wù)切片重新運(yùn)行。
其中,該請求中可以攜帶第二控制節(jié)點(diǎn)的需求數(shù)據(jù)版本。
405:第一控制節(jié)點(diǎn)調(diào)度所述第一任務(wù)的第一任務(wù)切片重新運(yùn)行。
第一控制節(jié)點(diǎn)接收到第二控制節(jié)點(diǎn)的請求之后,即調(diào)度所述第一任務(wù)的第一任務(wù)切片重新運(yùn)行。
406:第一控制節(jié)點(diǎn)在所述第一任務(wù)的第一任務(wù)切片重新運(yùn)行結(jié)束之后,通知所述第二控制節(jié)點(diǎn)獲取所述重新生成的運(yùn)行數(shù)據(jù)。
407:第二控制節(jié)點(diǎn)獲取所述重新生成的運(yùn)行數(shù)據(jù)。
第二控制節(jié)點(diǎn)接收到第一控制節(jié)點(diǎn)的通知之后,即獲取所述述第一任務(wù)的第一任務(wù)切片重新生成的運(yùn)行數(shù)據(jù)。
408:第二控制節(jié)點(diǎn)判斷所述重新生產(chǎn)的運(yùn)行數(shù)據(jù)版本與所述第二任務(wù)的第一任務(wù)切片的需求數(shù)據(jù)版本是否匹配,如果是,執(zhí)行步驟409,如果否,返回步驟404繼續(xù)執(zhí)行。
409:第二控制節(jié)點(diǎn)調(diào)度所述第二任務(wù)的第一任務(wù)切片運(yùn)行,處理所述第一任務(wù)的第一任務(wù)切片重新生成的運(yùn)行數(shù)據(jù)。
如果第二任務(wù)的第一任務(wù)切片的需求數(shù)據(jù)版本與第一任務(wù)的第一任務(wù)切片的運(yùn)行數(shù)據(jù)版本不一致,則可以調(diào)度該第一任務(wù)的第一任務(wù)切片繼續(xù)重新運(yùn)行,直至第二任務(wù)的第一任務(wù)切片的需求數(shù)據(jù)版本與第一任務(wù)的第一任務(wù)切片的運(yùn)行數(shù)據(jù)版本匹配。
在調(diào)度第一任務(wù)的第一任務(wù)切片重新運(yùn)行時(shí),若第二任務(wù)的第一任務(wù)切片需求數(shù)據(jù)版本低于該第一任務(wù)的第一任務(wù)切坡的運(yùn)行數(shù)據(jù)版本,則由于第一任務(wù)無法再生成低版本的數(shù)據(jù),因此將無法調(diào)度第一任務(wù)的第一任務(wù)切片運(yùn)行。
因此,作為又一個(gè)實(shí)施例,該步驟405可以具體是第一控制節(jié)點(diǎn)在所述第二任務(wù)的第一任務(wù)切片的需求版本,高于所述第一任務(wù)的第一任務(wù)切片的當(dāng)前運(yùn)行數(shù)據(jù)版本時(shí),調(diào)度所述第一任務(wù)的所述第一任務(wù)切片重新運(yùn)行。
本申請實(shí)施例中,通過需求數(shù)據(jù)版本與運(yùn)行數(shù)據(jù)版本的判斷,使得提高了任務(wù)切片運(yùn)行的成功率。且在第二任務(wù)中任務(wù)切片的需求數(shù)據(jù)版本與運(yùn)行數(shù)據(jù)版本不匹配時(shí),還可以調(diào)度第一任務(wù)的任務(wù)切片重新運(yùn)行,直至獲得與需求數(shù)據(jù)版本匹配的運(yùn)行數(shù)據(jù)版本,提高了數(shù)據(jù)處理成功率。避免了現(xiàn)有技術(shù)中,一個(gè)任務(wù)全部任務(wù)切片運(yùn)行結(jié)束之后,才能調(diào)度下一個(gè)任務(wù)的任務(wù)切片運(yùn)行,一旦任務(wù)切片的運(yùn)行數(shù)據(jù)出錯,后繼任務(wù)運(yùn)行起來之后就會因輸入數(shù)據(jù)錯誤導(dǎo)致失敗的問題。
其中,每一個(gè)控制節(jié)點(diǎn)可以為每一個(gè)任務(wù)切片保存一份數(shù)據(jù)版本表,可以將其獲取到的運(yùn)行數(shù)據(jù)版本存放在該數(shù)據(jù)版本表中,直至該數(shù)據(jù)運(yùn)行數(shù)據(jù)版本與數(shù)據(jù)版本表中的需求數(shù)據(jù)版本匹配時(shí),再調(diào)度該任務(wù)切片運(yùn)行。
由于在調(diào)度第二任務(wù)的任務(wù)切片運(yùn)行時(shí),第二任務(wù)中任一任務(wù)切片,處理運(yùn)行數(shù)據(jù)時(shí),有可能會失敗,比如無法成功讀取運(yùn)行數(shù)據(jù)。為了保證作業(yè)正常運(yùn)行,提高任務(wù)失敗的自修復(fù)能力,在所述第二任務(wù)中的任一任務(wù)切片處理所述運(yùn)行數(shù)據(jù)失敗時(shí),還可以調(diào)度所述第一任務(wù)中,所述運(yùn)行數(shù)據(jù)版本對應(yīng)的任務(wù)切片重新運(yùn)行。
如圖5所示,為本申請實(shí)施例提供的一種作業(yè)調(diào)度方法一個(gè)實(shí)施例的流程圖,該方法可以包括以下幾個(gè)步驟:
501:調(diào)度第一任務(wù)的第一控制節(jié)點(diǎn)在所述第一任務(wù)的至少一個(gè)任務(wù)切片運(yùn)行結(jié)束時(shí),通知調(diào)度第二任務(wù)的第二控制節(jié)點(diǎn)獲取所述第一任務(wù)的第二任務(wù)切片生成的運(yùn)行數(shù)據(jù)。
其中,所述第一任務(wù)為所述作業(yè)中任一運(yùn)行的任務(wù);所述第二任務(wù)為所述作業(yè)中依賴所述第一任務(wù)的任一任務(wù)。
所述第一任務(wù)的第二任務(wù)切片可以是第一任務(wù)中任一個(gè)任務(wù)切片。
502:第二控制節(jié)點(diǎn)獲取所述第一任務(wù)的至少一個(gè)任務(wù)切片生成的運(yùn)行數(shù)據(jù),并分配給所述第二任務(wù)的每一個(gè)任務(wù)切片。
503:第二控制節(jié)點(diǎn)調(diào)度第二任務(wù)的至少一個(gè)任務(wù)切片運(yùn)行,處理所述運(yùn)行數(shù)據(jù)。
其中,該至少一個(gè)任務(wù)切片可以是第二任務(wù)中,需求數(shù)據(jù)版本與該運(yùn)行數(shù)據(jù)版本匹配,且處理資源滿足預(yù)設(shè)條件的任務(wù)切片。
504:所第二控制節(jié)點(diǎn)判斷第二任務(wù)中,是否存在處理第一任務(wù)的第二任務(wù)切片生成的運(yùn)行數(shù)據(jù)失敗的第二任務(wù)切片,如果是,執(zhí)行步驟505,如果否,則結(jié)束流程。
其中,該第二任務(wù)的第二任務(wù)切片可以是指第二任務(wù)中處理所述運(yùn)行數(shù)據(jù)失敗的任一個(gè)任務(wù)切片。
第一任務(wù)的第二任務(wù)切片可以是第一任務(wù)中已經(jīng)運(yùn)行結(jié)束的任一個(gè)任務(wù)切片。
505:第二控制節(jié)點(diǎn)請求所述第一控制節(jié)點(diǎn)調(diào)度所述第一任務(wù)的第二任務(wù)切片重新運(yùn)行。
506:第一控制節(jié)點(diǎn)調(diào)度所述第一任務(wù)的第二任務(wù)切片重新運(yùn)行。
507:第一控制節(jié)點(diǎn)在所述第一任務(wù)的第二任務(wù)切片重新運(yùn)行結(jié)束之后,通知所述第二控制節(jié)點(diǎn)獲取所述重新生成的運(yùn)行數(shù)據(jù);
508:第二控制節(jié)點(diǎn)獲取所述重新生成的運(yùn)行數(shù)據(jù),并調(diào)度所述第二任務(wù)的所述第二任務(wù)切片運(yùn)行。
其中,由于任務(wù)切片每重新運(yùn)行一次,只能生成高于前一版本的運(yùn)行數(shù)據(jù),任務(wù)切片能夠運(yùn)行,表明其當(dāng)前需求數(shù)據(jù)版本與運(yùn)行數(shù)據(jù)版本匹配。
因此,為了能夠調(diào)度所述第一任務(wù)的所述第二任務(wù)切片重新運(yùn)行,第二控制節(jié)點(diǎn)可以通過提高數(shù)據(jù)請求版本,以觸發(fā)第一任務(wù)的第二任務(wù)切片重新運(yùn)行。
也即第二控制節(jié)點(diǎn)請求第一控制節(jié)點(diǎn)調(diào)度所述第一任務(wù)中所述運(yùn)行數(shù)據(jù)版本對應(yīng)的任務(wù)切片重新運(yùn)行,具體是通過提高需求數(shù)據(jù)版本,請求所述第一控制節(jié)點(diǎn)調(diào)度所述第一任務(wù)中所述運(yùn)行數(shù)據(jù)版本對應(yīng)的任務(wù)切片重新 運(yùn)行。
也即第二控制節(jié)點(diǎn)提高需求數(shù)據(jù)版本,并在發(fā)送至第一控制節(jié)點(diǎn)的請求中攜帶該提高的需求數(shù)據(jù)版本。從而第一控制節(jié)點(diǎn)在請求中的需求數(shù)據(jù)版本高于其當(dāng)前運(yùn)行數(shù)據(jù)版本時(shí),觸發(fā)任務(wù)切片重新運(yùn)行。
本申請實(shí)施例中,在數(shù)據(jù)處理失敗,可以調(diào)度任務(wù)切片重新運(yùn)行,從而在提高了資源利用率的同時(shí),還提高了作業(yè)失敗自修復(fù)能力。
下面結(jié)合一個(gè)實(shí)際應(yīng)用的例子,對本申請技術(shù)方案進(jìn)行詳細(xì)描述。
假設(shè)作業(yè)包括兩個(gè)具有依賴關(guān)系的任務(wù):task1和task2,task2的輸入為task1的輸出。如圖6所示的示意圖,假設(shè)task1包括三個(gè)任務(wù)切片M1、M2以及M3,task2包括兩個(gè)任務(wù)切片R1以及R2。
中心節(jié)點(diǎn)將task1分配給第一控制節(jié)點(diǎn)taskmaster1調(diào)度,將task2分配給第二控制節(jié)點(diǎn)taskmaster2調(diào)度。
taskmaster1以及taskmaster2可以為控制節(jié)點(diǎn)中任意的兩個(gè)控制節(jié)點(diǎn)。
task1的每一個(gè)任務(wù)切片的運(yùn)行數(shù)據(jù),taskmaster1均可以提供給taskmaster2。
taskmaster2會將運(yùn)行數(shù)據(jù)分配給每一個(gè)計(jì)算節(jié)點(diǎn)中的任務(wù)切片;taskmaster2的也可以向taskmaster1,請求獲取每一個(gè)任務(wù)切片請求對應(yīng)版本的數(shù)據(jù)。
假設(shè)task1的輸入數(shù)據(jù)已經(jīng)準(zhǔn)備好,可以正常運(yùn)行。中心節(jié)點(diǎn)觸發(fā)taskmaster1調(diào)度task1運(yùn)行。
taskmaster2為每一個(gè)task2可以維護(hù)一個(gè)數(shù)據(jù)版本列表,其中包括運(yùn)行數(shù)據(jù)版本和需求數(shù)據(jù)版本,只有運(yùn)行數(shù)據(jù)版本和需求數(shù)據(jù)版本一致,且處理資源滿足預(yù)設(shè)條件時(shí),task2的任務(wù)切片才可以調(diào)度運(yùn)行。每一個(gè)任務(wù)切片的初始需求數(shù)據(jù)版本一樣。
taskmaster1在task1的任一個(gè)任務(wù)切片運(yùn)行結(jié)束之后,即通知taskmaster2獲取生成的運(yùn)行數(shù)據(jù)。
taskmaster2將獲取的運(yùn)行數(shù)據(jù)分配給第二任務(wù)的每一個(gè)任務(wù)。
如果task2的某一個(gè)任務(wù)切片,假設(shè)R1的需求數(shù)據(jù)版本與task1的某一個(gè)任務(wù)切片,假設(shè)M1的運(yùn)行數(shù)據(jù)版本不匹配,則task2的R1處于等待處理M1的運(yùn)行數(shù)據(jù)的狀態(tài)。
同時(shí)taskmaster2可以向taskmaster1的請求獲取其需求版本的數(shù)據(jù),taskmaster1可以在taskmaster2請求的需求版本數(shù)據(jù)高于該運(yùn)行數(shù)據(jù)版本時(shí),調(diào)度task1的該任務(wù)切片M1重新運(yùn)行。
重新運(yùn)行結(jié)束之后,taskmaster1可以通知taskmaster2獲取M1重新運(yùn)行生成的數(shù)據(jù),taskmaster2接收到taskmaster1的通知之后,獲取M1重新運(yùn)行生成的數(shù)據(jù),并將M1重新運(yùn)行生成的數(shù)據(jù)分配給R1。
在R1的需求數(shù)據(jù)版本與M1的運(yùn)行數(shù)據(jù)版本匹配時(shí),R1即開始運(yùn)行,處理M1的運(yùn)行數(shù)據(jù)。
如果需求版本的數(shù)據(jù)低于運(yùn)行數(shù)據(jù)的版本,任務(wù)切片M1將不能被調(diào)度運(yùn)行。
如果task2的某一個(gè)任務(wù)切片,假設(shè)R2的處理資源未滿足預(yù)設(shè)條件,則R2繼續(xù)等待,直至其計(jì)算節(jié)點(diǎn)的處理資源滿足預(yù)設(shè)條件時(shí),且其需求數(shù)據(jù)版本與接收到的task1的任務(wù)切片,假設(shè)與M2的運(yùn)行數(shù)據(jù)匹配,則即可以運(yùn)行,處理M2的運(yùn)行數(shù)據(jù)。
在task2的任務(wù)切片運(yùn)行,處理task1的任務(wù)切片的運(yùn)行數(shù)據(jù)時(shí),有可能讀取運(yùn)行數(shù)據(jù)失敗,導(dǎo)致數(shù)據(jù)處理失敗,假設(shè)R1讀取M1的運(yùn)行數(shù)據(jù)失敗,則taskmaster2可以請求taskmaster1調(diào)度M1重新運(yùn)行。
由于M1每運(yùn)行一次只能生成高版本的數(shù)據(jù),因此可以通過提高需求數(shù)據(jù)版本的方式,請求taskmaster1調(diào)度M1重新運(yùn)行,taskmaster1在taskmaster2的需求數(shù)據(jù)版本高于其運(yùn)行數(shù)據(jù)版本時(shí),則可以觸發(fā)M1重新運(yùn)行。
如圖1中所示,本申請實(shí)施例還提供了一種分布式系統(tǒng),該分布式系統(tǒng)包括一中心節(jié)點(diǎn)101、與所述中心節(jié)點(diǎn)101連接的多個(gè)控制節(jié)點(diǎn)102以及每一個(gè)控制節(jié)點(diǎn)連接的多個(gè)計(jì)算節(jié)點(diǎn)103;
所述中心節(jié)點(diǎn)101,用于為各個(gè)控制節(jié)點(diǎn)分配所述作業(yè)的任務(wù),每一控制節(jié)點(diǎn)調(diào)度所述作業(yè)的其中一個(gè)任務(wù)。
所述計(jì)算節(jié)點(diǎn)103,用于運(yùn)行與其連接的控制節(jié)點(diǎn)分配的任務(wù)切片;
控制節(jié)點(diǎn)103中的第一控制節(jié)點(diǎn),用于在為其分配的第一任務(wù)的至少一個(gè)任務(wù)切片運(yùn)行結(jié)束時(shí),通知調(diào)度第二任務(wù)的第二控制節(jié)點(diǎn)獲取所述第一任務(wù)的至少一個(gè)任務(wù)切片運(yùn)行生成的運(yùn)行數(shù)據(jù);其中,所述第一任務(wù)為所述作業(yè)中任一運(yùn)行的任務(wù);所述第二任務(wù)為所述作業(yè)中依賴所述第一任務(wù)的任一任務(wù);
控制節(jié)點(diǎn)103中的第二控制節(jié)點(diǎn),用于獲取第一控制節(jié)點(diǎn)中所述第一任務(wù)的至少一個(gè)任務(wù)切片運(yùn)行生成的運(yùn)行數(shù)據(jù),并分配給所述第二任務(wù)的每一個(gè)任務(wù)切片;調(diào)度所述第二任務(wù)的至少一個(gè)任務(wù)切片運(yùn)行,處理所述運(yùn)行數(shù)據(jù)。
第一控制節(jié)點(diǎn)以及第二控制節(jié)點(diǎn)不同,可以是多個(gè)控制節(jié)點(diǎn)中的任意兩個(gè)控制節(jié)點(diǎn),由中心節(jié)點(diǎn)分配,分別調(diào)度第一任務(wù)和第二任務(wù)。
通過本申請實(shí)施例的分布式系統(tǒng),通過控制節(jié)點(diǎn),實(shí)現(xiàn)了作業(yè)中任務(wù)的調(diào)度,無需中心節(jié)點(diǎn)進(jìn)行統(tǒng)一調(diào)度,中心節(jié)點(diǎn)只負(fù)責(zé)任務(wù)的分配,從而減輕了中心節(jié)點(diǎn)的調(diào)度壓力,可以提高調(diào)度效率。在進(jìn)行作業(yè)調(diào)度時(shí),在作業(yè)中的第一任務(wù)的至少一個(gè)任務(wù)切片運(yùn)行結(jié)束之后,第一控制節(jié)點(diǎn)會通知第二控制節(jié)點(diǎn),第二控制節(jié)點(diǎn)即可以調(diào)度第二任務(wù)的任務(wù)切片運(yùn)行,對運(yùn)行數(shù)據(jù)進(jìn)行處理,無需等待第一任務(wù)的全部任務(wù)切片運(yùn)行結(jié)束,第二任務(wù)的任務(wù)切片即可以調(diào)度運(yùn)行進(jìn)行數(shù)據(jù)處理,充分利用了集群資源,避免了資源的浪費(fèi)。
作為又一個(gè)實(shí)施例,所述第二控制節(jié)點(diǎn)調(diào)度所述第二任務(wù)的每一個(gè)任務(wù)切片運(yùn)行,處理所述運(yùn)行數(shù)據(jù)可以具體是:
調(diào)度所述第二任務(wù)中,需求數(shù)據(jù)版本與所述運(yùn)行數(shù)據(jù)版本匹配的任務(wù)切片運(yùn)行,處理所述運(yùn)行數(shù)據(jù)。
如果第一任務(wù)的所述至少一個(gè)任務(wù)切片的運(yùn)行數(shù)據(jù)版本,與第二任務(wù)的任一個(gè)任務(wù)切片的需求數(shù)據(jù)版本不匹配時(shí),則本申請實(shí)施例中,第二控制節(jié) 點(diǎn)還可以請求第一控制節(jié)點(diǎn),調(diào)度第一任務(wù)中,所述運(yùn)行數(shù)據(jù)版本對應(yīng)的任務(wù)切片重新運(yùn)行。因此,作為又一個(gè)實(shí)施例,所述第二控制節(jié)點(diǎn)還用于:
在所述第二任務(wù)中的第一任務(wù)切片的需求數(shù)據(jù)版本與所述運(yùn)行數(shù)據(jù)不匹配時(shí),請求所述第一控制節(jié)點(diǎn)調(diào)度所述第一任務(wù)中所述運(yùn)行數(shù)據(jù)版本對應(yīng)的任務(wù)切片重新運(yùn)行;獲取所述第一控制節(jié)點(diǎn)重新生成的運(yùn)行數(shù)據(jù),在所述重新生成的運(yùn)行數(shù)據(jù)版本與所述第一任務(wù)切片的需求數(shù)據(jù)版本匹配時(shí),調(diào)度所述第一任務(wù)切片運(yùn)行;否則請求所述第一控制節(jié)點(diǎn)調(diào)度所述第一任務(wù)中所述運(yùn)行數(shù)據(jù)版本對應(yīng)的任務(wù)切片重新運(yùn)行,直至重新生成的運(yùn)行數(shù)據(jù)版本與所述第一任務(wù)切片的需求數(shù)據(jù)版本匹配。
所述第一控制節(jié)點(diǎn)還用于:
接收到所述第二控制節(jié)點(diǎn)的請求時(shí),調(diào)度所述第一任務(wù)中所述運(yùn)行數(shù)據(jù)版本對應(yīng)的任務(wù)切片重新運(yùn)行;在所述第一任務(wù)中所述運(yùn)行數(shù)據(jù)版本對應(yīng)的任務(wù)切片重新運(yùn)行結(jié)束之后,通知所述第二控制節(jié)點(diǎn)獲取所述重新生成的運(yùn)行數(shù)據(jù)。
通過需求數(shù)據(jù)版本與運(yùn)行數(shù)據(jù)版本的判斷,使得進(jìn)一步提高了任務(wù)切片運(yùn)行的成功率。且在第二任務(wù)中任務(wù)切片的需求數(shù)據(jù)版本與運(yùn)行數(shù)據(jù)版本不匹配時(shí),還可以調(diào)度第一任務(wù)的任務(wù)切片重新運(yùn)行,直至獲得與需求數(shù)據(jù)版本匹配的運(yùn)行數(shù)據(jù)版本,進(jìn)一步的提高數(shù)據(jù)處理成功率。避免了現(xiàn)有技術(shù)中,一個(gè)任務(wù)全部任務(wù)切片運(yùn)行結(jié)束之后,才能調(diào)度下一個(gè)任務(wù)的任務(wù)切片運(yùn)行,一旦任務(wù)切片的運(yùn)行數(shù)據(jù)出錯,后繼任務(wù)運(yùn)行起來之后就會因輸入數(shù)據(jù)錯誤導(dǎo)致失敗的問題。
由于在調(diào)度第二任務(wù)的任務(wù)切片運(yùn)行時(shí),第二任務(wù)中任一任務(wù)切片,處理運(yùn)行數(shù)據(jù)時(shí),有可能會失敗,比如無法成功讀取運(yùn)行數(shù)據(jù),因此,作為又一個(gè)實(shí)施例,所述第二控制節(jié)點(diǎn)還用于:
在所述第二任務(wù)中的第二任務(wù)切片處理所述運(yùn)行數(shù)據(jù)失敗時(shí),請求所述第一控制節(jié)點(diǎn)調(diào)度所述第一任務(wù)中,所述運(yùn)行數(shù)據(jù)版本對應(yīng)的任務(wù)切片重新運(yùn)行;獲取重新生成的運(yùn)行數(shù)據(jù)版本,并調(diào)度所述第二任務(wù)的任務(wù)切片運(yùn)行, 處理所述重新運(yùn)行生成的數(shù)據(jù)版本;
所述第一控制節(jié)點(diǎn)還用于:
接收到所述第二控制節(jié)點(diǎn)的請求時(shí),調(diào)度所述第一任務(wù)中所述運(yùn)行數(shù)據(jù)版本對應(yīng)的任務(wù)切片重新運(yùn)行;在所述第一任務(wù)中所述運(yùn)行數(shù)據(jù)版本對應(yīng)的任務(wù)切片重新運(yùn)行結(jié)束之后,通知所述第二控制節(jié)點(diǎn)獲取所述重新生成的運(yùn)行數(shù)據(jù)。
另外,第二控制節(jié)點(diǎn)請求第一控制節(jié)點(diǎn)調(diào)度所述第一任務(wù)中所述運(yùn)行數(shù)據(jù)版本對應(yīng)的任務(wù)切片重新運(yùn)行,可以是通過提高需求數(shù)據(jù)版本,請求所述第一控制節(jié)點(diǎn)調(diào)度所述第一任務(wù)中所述運(yùn)行數(shù)據(jù)版本對應(yīng)的任務(wù)切片重新運(yùn)行。
也即第二控制節(jié)點(diǎn)提高需求數(shù)據(jù)版本,并在發(fā)送至第一控制節(jié)點(diǎn)的請求中攜帶該提高的需求數(shù)據(jù)版本。從而第一控制節(jié)點(diǎn)在請求中的需求數(shù)據(jù)版本高于其當(dāng)前運(yùn)行數(shù)據(jù)版本時(shí),觸發(fā)任務(wù)切片重新運(yùn)行。
在數(shù)據(jù)處理失敗,通過調(diào)度任務(wù)切片重新運(yùn)行,提高了資源利用率的同時(shí),還提高了作業(yè)失敗自修復(fù)能力。
本申請實(shí)施例還提供了一種作業(yè)調(diào)度裝置,如圖7所示,為該作業(yè)調(diào)度裝置的結(jié)構(gòu)示意圖,該裝置具體應(yīng)用于圖1所示的分布式系統(tǒng)中的控制節(jié)點(diǎn)中。
該裝置可以包括:
通知模塊701,用于在調(diào)度的第一任務(wù)的至少一個(gè)任務(wù)切片運(yùn)行結(jié)束時(shí),通知調(diào)度第二任務(wù)的控制節(jié)點(diǎn)獲取所述第一任務(wù)的至少一個(gè)任務(wù)切片運(yùn)行生成的運(yùn)行數(shù)據(jù);以便于所述調(diào)度第二任務(wù)的控制節(jié)點(diǎn)將獲取的所述運(yùn)行數(shù)據(jù),分配給所述第二任務(wù)的每一個(gè)任務(wù)切片;調(diào)度所述第二任務(wù)的每一個(gè)任務(wù)切片運(yùn)行,處理所述運(yùn)行數(shù)據(jù);
其中,所述第一任務(wù)為所述作業(yè)中任一運(yùn)行的任務(wù);所述第二任務(wù)為所述作業(yè)中依賴所述第一任務(wù)的任一任務(wù)。
圖8示出了本申請實(shí)施例提供的一種作業(yè)調(diào)度裝置另一個(gè)實(shí)施例的結(jié)構(gòu)示意圖,該裝置具體應(yīng)用于圖1所示的分布式系統(tǒng)中的控制節(jié)點(diǎn)中,
該裝置可以包括:
獲取模塊801,用于接收到調(diào)度第一任務(wù)的控制節(jié)點(diǎn)的通知時(shí),獲取所述第一任務(wù)的至少一個(gè)任務(wù)切片運(yùn)行生成的運(yùn)行數(shù)據(jù);其中,所述通知為所述調(diào)度第一任務(wù)的控制節(jié)點(diǎn)在所述第一任務(wù)的至少一個(gè)任務(wù)切片運(yùn)行結(jié)束之后發(fā)送的;所述第一任務(wù)為所述作業(yè)中任一運(yùn)行的任務(wù);所述第二任務(wù)為所述作業(yè)中依賴所述第一任務(wù)的任一任務(wù);
分配模塊802,用于將獲取的所述第一任務(wù)的至少一個(gè)任務(wù)切片生成的運(yùn)行數(shù)據(jù),分配給所述第二任務(wù)的每一個(gè)任務(wù)切片;
調(diào)度模塊803,用于調(diào)度所述第二任務(wù)的至少一個(gè)任務(wù)切片運(yùn)行,處理所述運(yùn)行數(shù)據(jù)。
其中,所述調(diào)度模塊803具體是用于調(diào)度所述第二任務(wù)中,需求數(shù)據(jù)版本與所述運(yùn)行數(shù)據(jù)版本匹配的任務(wù)切片運(yùn)行,處理所述運(yùn)行數(shù)據(jù)。
如圖9所示,作為又一個(gè)實(shí)施例,在圖8所示的作業(yè)調(diào)度裝置中,該裝置還可以包括:
第一請求模塊901,用于在所述第二任務(wù)中的第一任務(wù)切片的需求數(shù)據(jù)版本與所述運(yùn)行數(shù)據(jù)不匹配時(shí),請求所述調(diào)度第一任務(wù)的控制節(jié)點(diǎn)調(diào)度所述第一任務(wù)中所述運(yùn)行數(shù)據(jù)版本對應(yīng)的任務(wù)切片重新運(yùn)行;
則所述獲取模塊801還用于獲取所述第一任務(wù)中所述運(yùn)行數(shù)據(jù)版本對應(yīng)的任務(wù)切片重新生成的運(yùn)行數(shù)據(jù)版本;
則所述分配模塊802,還用于將獲取的重新生成的運(yùn)行數(shù)據(jù)版本發(fā)送至所述第二任務(wù)的第一任務(wù)切片。
則所述調(diào)度模塊803還用于在所述重新生成的運(yùn)行數(shù)據(jù)版本與所述第一任務(wù)切片的需求數(shù)據(jù)版本匹配時(shí),調(diào)度所述第一任務(wù)切片運(yùn)行;否則請求所述第一控制節(jié)點(diǎn)調(diào)度所述第一任務(wù)中所述運(yùn)行數(shù)據(jù)版本對應(yīng)的任務(wù)切片重新運(yùn)行,直至重新生成的運(yùn)行數(shù)據(jù)版本與所述第一任務(wù)切片的需求數(shù)據(jù)版 本匹配。
如圖10所示,作為又一個(gè)實(shí)施例,在圖8所示的作業(yè)調(diào)度裝置中,該裝置還可以包括:
第二請求模塊1001,用于在所述第二任務(wù)中的第二任務(wù)切片處理所述運(yùn)行數(shù)據(jù)失敗時(shí),請求所述第一控制節(jié)點(diǎn)調(diào)度所述第一任務(wù)中,所述運(yùn)行數(shù)據(jù)版本對應(yīng)的任務(wù)切片重新運(yùn)行;
所述獲取模塊801,還用于獲取所述第一任務(wù)中,所述運(yùn)行數(shù)據(jù)版本對應(yīng)的任務(wù)切片重新生成的運(yùn)行數(shù)據(jù)版本。
所述分配模塊802,還用于將重新生成的運(yùn)行數(shù)據(jù)版本分配至所述第二任務(wù)的第二任務(wù)切片。
所述調(diào)度模塊803還用于調(diào)度所述第二任務(wù)的第二任務(wù)切片運(yùn)行,處理所述重新運(yùn)行的數(shù)據(jù)版本。
如在說明書及權(quán)利要求當(dāng)中使用了某些詞匯來指稱特定組件。本領(lǐng)域技術(shù)人員應(yīng)可理解,硬件制造商可能會用不同名詞來稱呼同一個(gè)組件。本說明書及權(quán)利要求并不以名稱的差異來作為區(qū)分組件的方式,而是以組件在功能上的差異來作為區(qū)分的準(zhǔn)則。如在通篇說明書及權(quán)利要求當(dāng)中所提及的“包含”為一開放式用語,故應(yīng)解釋成“包含但不限定于”。“大致”是指在可接收的誤差范圍內(nèi),本領(lǐng)域技術(shù)人員能夠在一定誤差范圍內(nèi)解決所述技術(shù)問題,基本達(dá)到所述技術(shù)效果。此外,“耦接”一詞在此包含任何直接及間接的電性耦接手段。因此,若文中描述一第一裝置耦接于一第二裝置,則代表所述第一裝置可直接電性耦接于所述第二裝置,或通過其他裝置或耦接手段間接地電性耦接至所述第二裝置。說明書后續(xù)描述為實(shí)施本申請的較佳實(shí)施方式,然所述描述乃以說明本申請的一般原則為目的,并非用以限定本申請的范圍。本申請的保護(hù)范圍當(dāng)視所附權(quán)利要求所界定者為準(zhǔn)。
還需要說明的是,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的商品或者系統(tǒng)不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種商品或者系統(tǒng)所固有的要素。在沒有更多限制的情況下,由語句“包括一個(gè)......”限定的 要素,并不排除在包括所述要素的商品或者系統(tǒng)中還存在另外的相同要素。
上述說明示出并描述了本申請的若干優(yōu)選實(shí)施例,但如前所述,應(yīng)當(dāng)理解本申請并非局限于本文所披露的形式,不應(yīng)看作是對其他實(shí)施例的排除,而可用于各種其他組合、修改和環(huán)境,并能夠在本文所述申請構(gòu)想范圍內(nèi),通過上述教導(dǎo)或相關(guān)領(lǐng)域的技術(shù)或知識進(jìn)行改動。而本領(lǐng)域人員所進(jìn)行的改動和變化不脫離本申請的精神和范圍,則都應(yīng)在本申請所附權(quán)利要求的保護(hù)范圍內(nèi)。