數(shù)據(jù)處理作業(yè)調(diào)度方法及裝置的制造方法
【專利摘要】本發(fā)明實(shí)施例提供一種數(shù)據(jù)處理作業(yè)調(diào)度方法和裝置,所述方法包括:獲取預(yù)先配置的數(shù)據(jù)處理流程的各個(gè)作業(yè)之間的依賴關(guān)系;根據(jù)所述數(shù)據(jù)處理流程的各個(gè)作業(yè)之間的依賴關(guān)系,從所述數(shù)據(jù)處理流程的最終作業(yè)開(kāi)始,針對(duì)每一個(gè)進(jìn)行調(diào)度的當(dāng)前作業(yè),判斷是否存在當(dāng)前作業(yè)的前提作業(yè);在存在前提作業(yè)時(shí),且所述前提作業(yè)未運(yùn)行時(shí),對(duì)所述前提作業(yè)進(jìn)行調(diào)度;在不存在前提作業(yè),或者所述前提作業(yè)均運(yùn)行成功時(shí),調(diào)度當(dāng)前作業(yè)運(yùn)行,其中,當(dāng)前作業(yè)運(yùn)行時(shí)依賴所述當(dāng)前作業(yè)的前提作業(yè)的運(yùn)行結(jié)果。本發(fā)明實(shí)施例減少了作業(yè)調(diào)度時(shí)間,提高了作業(yè)調(diào)度效率。
【專利說(shuō)明】
數(shù)據(jù)處理作業(yè)調(diào)度方法及裝置
技術(shù)領(lǐng)域
[0001] 本發(fā)明實(shí)施例涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)處理作業(yè)調(diào)度方法及裝 置。
【背景技術(shù)】
[0002] 在進(jìn)行數(shù)據(jù)處理的流程中,特別是大數(shù)據(jù)領(lǐng)域比較復(fù)雜的數(shù)據(jù)處理流程中,通常 是將數(shù)據(jù)處理流程劃分為若干作業(yè)對(duì)數(shù)據(jù)進(jìn)行處理。
[0003] 這些作業(yè)之間有的需要依賴其他作業(yè)的正確運(yùn)行結(jié)果才能夠運(yùn)行,有的作業(yè)之間 并無(wú)這種依賴關(guān)系,可以并發(fā)運(yùn)行。而整個(gè)數(shù)據(jù)處理流程的全部作業(yè)均運(yùn)行成功,數(shù)據(jù)處理 流程才會(huì)認(rèn)為運(yùn)行成功,如果一個(gè)作業(yè)依賴的前提作業(yè)還未運(yùn)行或運(yùn)行失敗,該作業(yè)即開(kāi) 始執(zhí)行,則會(huì)造成數(shù)據(jù)錯(cuò)誤,數(shù)據(jù)處理流程也會(huì)認(rèn)為運(yùn)行失敗,因此需要對(duì)作業(yè)進(jìn)行有效的 調(diào)度。
[0004] 現(xiàn)有技術(shù)的一種數(shù)據(jù)處理作業(yè)調(diào)度方法中,是由技術(shù)人員根據(jù)數(shù)據(jù)處理流程中各 個(gè)作業(yè)之間的依賴關(guān)系,首先將各個(gè)作業(yè)劃分多個(gè)執(zhí)行階段。根據(jù)依賴關(guān)系可知,這些執(zhí)行 階段之間存在執(zhí)行順序。在進(jìn)行作業(yè)調(diào)度時(shí),即按照?qǐng)?zhí)行階段的執(zhí)行順序,分階段的進(jìn)行作 業(yè)調(diào)度,每一個(gè)階段的作業(yè)全部運(yùn)行成功之后,再調(diào)度下一個(gè)階段中的作業(yè)執(zhí)行。比如,假 設(shè)數(shù)據(jù)處理流程包括作業(yè)A、B、C、D、E,作業(yè)A為數(shù)據(jù)處理流程中的初始作業(yè),作業(yè)E為最 終的作業(yè),作業(yè)B和作業(yè)C分別依賴作業(yè)A的運(yùn)行結(jié)果,作業(yè)D依賴作業(yè)B的運(yùn)行結(jié)果,作 業(yè)E依賴作業(yè)C和作業(yè)D的執(zhí)行結(jié)果。因此根據(jù)各個(gè)作業(yè)之間的依賴關(guān)系,劃分的執(zhí)行階 段為:第一個(gè)執(zhí)行階段包括作業(yè)A ;由于作業(yè)C分別與作業(yè)B和作業(yè)D不存在依賴關(guān)系,可 以放在一個(gè)執(zhí)行階段并發(fā)執(zhí)行,而作業(yè)B和作業(yè)D之間存在依賴關(guān)系,不能放在一個(gè)執(zhí)行階 段執(zhí)行,因此第二執(zhí)行階段只包括作業(yè)B和作業(yè)C,作業(yè)D劃分為第三執(zhí)行階段;第四執(zhí)行 階段即包括作業(yè)E。
[0005] 由上述描述過(guò)程可知,現(xiàn)有的作業(yè)調(diào)度方法,雖然可以保證作業(yè)有序執(zhí)行,不會(huì)造 成數(shù)據(jù)錯(cuò)誤,但是分階段執(zhí)行這種方式,使得作業(yè)調(diào)度效率較低,比如上述假設(shè)中,作業(yè)B 和作業(yè)D之間存在依賴關(guān)系,作業(yè)B運(yùn)行成功之后,作業(yè)D即可以運(yùn)行了,但是按照分階段 執(zhí)行的方式,作業(yè)C若未運(yùn)行完成,作業(yè)D仍無(wú)法運(yùn)行,這就會(huì)導(dǎo)致作業(yè)調(diào)度時(shí)間較長(zhǎng),降低 了作業(yè)調(diào)度效率。
【發(fā)明內(nèi)容】
[0006] 本發(fā)明實(shí)施例提供一種數(shù)據(jù)處理作業(yè)調(diào)度方法及裝置,用以解決現(xiàn)有技術(shù)中作業(yè) 調(diào)度時(shí)間過(guò)長(zhǎng),作業(yè)調(diào)度效率低的技術(shù)問(wèn)題。
[0007] 本發(fā)明實(shí)施例提供一種數(shù)據(jù)處理作業(yè)調(diào)度方法,包括:
[0008] 獲取預(yù)先配置的數(shù)據(jù)處理流程的各個(gè)作業(yè)之間的依賴關(guān)系;
[0009] 根據(jù)所述數(shù)據(jù)處理流程的各個(gè)作業(yè)之間的依賴關(guān)系,從所述數(shù)據(jù)處理流程的最終 作業(yè)開(kāi)始,針對(duì)每一個(gè)進(jìn)行調(diào)度的當(dāng)前作業(yè),判斷是否存在當(dāng)前作業(yè)的前提作業(yè);
[0010] 在存在前提作業(yè),且所述前提作業(yè)未運(yùn)行時(shí),對(duì)所述前提作業(yè)進(jìn)行調(diào)度;
[0011] 在不存在前提作業(yè),或者所述前提作業(yè)均運(yùn)行成功時(shí),調(diào)度所述當(dāng)前作業(yè)運(yùn)行。
[0012] 本發(fā)明實(shí)施例提供一種數(shù)據(jù)處理作業(yè)調(diào)度裝置,包括:
[0013] 獲取模塊,用于獲取預(yù)先配置的數(shù)據(jù)處理流程的各個(gè)作業(yè)之間的依賴關(guān)系;
[0014] 判斷模塊,用于根據(jù)所述數(shù)據(jù)處理流程的各個(gè)作業(yè)之間的依賴關(guān)系,從數(shù)據(jù)處理 流程的最終作業(yè)開(kāi)始,針對(duì)每一個(gè)進(jìn)行調(diào)度的當(dāng)前作業(yè),判斷是否存在當(dāng)前作業(yè)的前提作 業(yè);
[0015] 第一調(diào)度模塊,用于在存在前提作業(yè)時(shí),且所述前提作業(yè)未運(yùn)行時(shí),對(duì)所述前提作 業(yè)進(jìn)行調(diào)度;
[0016] 第二調(diào)度模塊,用于在不存在前提作業(yè)時(shí),調(diào)度所述當(dāng)前作業(yè)運(yùn)行;
[0017] 第三調(diào)度模塊,用于在所述前提作業(yè)均運(yùn)行成功時(shí),調(diào)度所述當(dāng)前作業(yè)運(yùn)行。
[0018] 本發(fā)明實(shí)施例提供的數(shù)據(jù)處理作業(yè)調(diào)度方法及裝置,針對(duì)每一個(gè)進(jìn)行調(diào)度的當(dāng)前 作業(yè),在存在前提作業(yè),且所述前提作業(yè)未運(yùn)行時(shí),對(duì)所述前提作業(yè)進(jìn)行調(diào)度;在不存在所 述前提作業(yè),或者所述前提作業(yè)均運(yùn)行成功時(shí),調(diào)度所述當(dāng)前作業(yè)運(yùn)行。因此保證了無(wú)依賴 關(guān)系的作業(yè)并發(fā)運(yùn)行,有依賴關(guān)系的作業(yè)有序運(yùn)行,避免了分階段執(zhí)行導(dǎo)致調(diào)度時(shí)間較長(zhǎng) 的問(wèn)題,當(dāng)前作業(yè)在其前提作業(yè)均運(yùn)行成功之后,即可以運(yùn)行,無(wú)需等待,減少了作業(yè)調(diào)度 時(shí)間,從而提高了作業(yè)調(diào)度效率,且提高了資源利用率。
【附圖說(shuō)明】
[0019] 為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作一簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖是本發(fā) 明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根 據(jù)這些附圖獲得其他的附圖。
[0020] 圖1為本發(fā)明數(shù)據(jù)處理作業(yè)調(diào)度方法一實(shí)施例的流程圖;
[0021] 圖2為本發(fā)明實(shí)施例提供的DAG (Directed Acyclic Graph,有向無(wú)環(huán)圖)的一種 示意圖;
[0022] 圖3為本發(fā)明數(shù)據(jù)處理作業(yè)調(diào)度方法又一實(shí)施例的流程圖;
[0023] 圖4為本發(fā)明數(shù)據(jù)處理作業(yè)調(diào)度裝置一實(shí)施例的結(jié)構(gòu)示意圖;
[0024] 圖5為本發(fā)明數(shù)據(jù)處理作業(yè)調(diào)度裝置又一實(shí)施例的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0025] 為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例 中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是 本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員 在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0026] 正如【背景技術(shù)】中所述,現(xiàn)有技術(shù)中分階段的作業(yè)調(diào)度方法,為了保證作業(yè)能夠有 序執(zhí)行,在一個(gè)執(zhí)行階段中的作業(yè)未運(yùn)行成功時(shí),下一個(gè)執(zhí)行階段中的作業(yè)將無(wú)法調(diào)度運(yùn) 行,這就會(huì)導(dǎo)致作業(yè)調(diào)度時(shí)間較長(zhǎng),降低了作業(yè)調(diào)度效率。特別是當(dāng)數(shù)據(jù)處理流程中作業(yè)較 多,作業(yè)之間的依賴關(guān)系很復(fù)雜時(shí),作業(yè)調(diào)度效率將受到很大的影響,且由于執(zhí)行階段需要 人工來(lái)劃分,工作量較大,也會(huì)影響作業(yè)調(diào)度時(shí)間,且執(zhí)行階段劃分的準(zhǔn)確性也無(wú)法完全保 證。
[0027] 為了解決現(xiàn)有技術(shù)中存在的技術(shù)問(wèn)題,發(fā)明人經(jīng)過(guò)不斷的研究發(fā)現(xiàn),為了保證作 業(yè)調(diào)度時(shí)間,提高作業(yè)調(diào)度效率,作業(yè)有序執(zhí)行的同時(shí),就要減少作業(yè)等待執(zhí)行的時(shí)間。
[0028] 發(fā)明人進(jìn)一步發(fā)現(xiàn),為了減少作業(yè)等待執(zhí)行時(shí)間,又保證作業(yè)有序的執(zhí)行,可以將 無(wú)依賴關(guān)系的作業(yè)最大化的并行運(yùn)行,也即將無(wú)依賴關(guān)系的作業(yè)同時(shí)運(yùn)行,將會(huì)大大提高 作業(yè)調(diào)度效率,且可以充分的利用計(jì)算資源。
[0029] 因此,發(fā)明人基于這一創(chuàng)造性的思維,提出了本發(fā)明的技術(shù)方案:
[0030] 在本發(fā)明實(shí)施例中,進(jìn)行作業(yè)調(diào)度時(shí),從存在依賴關(guān)系的各個(gè)作業(yè)的最終作業(yè)開(kāi) 始,針對(duì)每一個(gè)進(jìn)行調(diào)度的當(dāng)前作業(yè),首先對(duì)其進(jìn)行判斷,判斷是否存在前提作業(yè),如果存 在前提作業(yè)且前提作業(yè)未運(yùn)行,則對(duì)前提作業(yè)進(jìn)行調(diào)度;如果存在前提作業(yè)且前提作業(yè)均 運(yùn)行成功,或者不存在前提作業(yè),再運(yùn)行當(dāng)前作業(yè)。按照本發(fā)明實(shí)施例的技術(shù)方案,不存在 前提作業(yè)的作業(yè)首先運(yùn)行,每一個(gè)進(jìn)行調(diào)度的當(dāng)前作業(yè)的前提作業(yè)優(yōu)先當(dāng)前作業(yè)運(yùn)行,從 而保證作業(yè)的有序執(zhí)行,且當(dāng)前作業(yè)在其前提作業(yè)運(yùn)行成功之后,即可以運(yùn)行,無(wú)需等待, 且由于當(dāng)前作業(yè)的前提作業(yè)至少包括一個(gè),使得對(duì)當(dāng)前作業(yè)的全部前提作業(yè)的調(diào)度可以同 時(shí)進(jìn)行,保證了作業(yè)的最大化并行運(yùn)行,相對(duì)于現(xiàn)有技術(shù)分階段執(zhí)行的調(diào)度方案,節(jié)省了調(diào) 度時(shí)間,提高了調(diào)度效率。且無(wú)需由人工劃分為多個(gè)執(zhí)行階段,也節(jié)省了人工工作量,從而 進(jìn)一步提高了作業(yè)調(diào)度效率。
[0031] 下面結(jié)合附圖對(duì)本發(fā)明技術(shù)方案進(jìn)行詳細(xì)描述。
[0032] 圖1為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)處理作業(yè)調(diào)度方法一個(gè)實(shí)施例的流程圖,該 方法可以包括以下幾個(gè)步驟:
[0033] 101 :獲取預(yù)先配置的數(shù)據(jù)處理流程的各個(gè)作業(yè)之間的依賴關(guān)系。
[0034] 102 :根據(jù)所述數(shù)據(jù)處理流程的各個(gè)作業(yè)之間的依賴關(guān)系,從所述數(shù)據(jù)處理流程的 最終作業(yè)開(kāi)始,針對(duì)每一個(gè)進(jìn)行調(diào)度的當(dāng)前作業(yè),判斷是否存在當(dāng)作業(yè)的前提作業(yè)。
[0035] 103 :在存在當(dāng)前作業(yè)的前提作業(yè)時(shí),且所述前提作業(yè)未運(yùn)行時(shí),對(duì)所述前提作業(yè) 進(jìn)行調(diào)度。
[0036] 104 :在不存在當(dāng)前作業(yè)的前提作業(yè),或者所述前提作業(yè)均運(yùn)行成功時(shí),調(diào)度所述 當(dāng)前作業(yè)運(yùn)行。
[0037] 若至少一個(gè)前提作業(yè)未運(yùn)行成功,則不會(huì)調(diào)度當(dāng)前作業(yè)運(yùn)行。
[0038] 其中,當(dāng)前作業(yè)運(yùn)行時(shí)依賴所述當(dāng)前作業(yè)的前提作業(yè)的運(yùn)行結(jié)果。
[0039] 本發(fā)明實(shí)施例中,對(duì)一個(gè)作業(yè)進(jìn)行調(diào)度的過(guò)程包括對(duì)作業(yè)的前提作業(yè)判斷以及作 業(yè)的運(yùn)行。
[0040] -個(gè)數(shù)據(jù)處理流程中的作業(yè)之間存在依賴關(guān)系,根據(jù)作業(yè)之間的依賴關(guān)系,最終 會(huì)匯聚到一個(gè)作業(yè),即數(shù)據(jù)處理流程中的最后一個(gè)作業(yè),最終作業(yè)也即是指該數(shù)據(jù)處理流 程中的最后一個(gè)作業(yè)。
[0041] 前提作業(yè)是指任一個(gè)作業(yè)需要依賴其運(yùn)行結(jié)果才能運(yùn)行的作業(yè)。例如作業(yè)B依賴 作業(yè)A的運(yùn)行結(jié)果,作業(yè)B即為作業(yè)A的前提作業(yè)。
[0042] 由作業(yè)之間的依賴關(guān)系形成的拓?fù)浣Y(jié)構(gòu)中,部分作業(yè)可能是不存在依賴關(guān)系的, 這些不存在依賴關(guān)系的作業(yè)是可以并發(fā)執(zhí)行的。因此,本發(fā)明實(shí)施例中,從最終作業(yè)開(kāi)始, 對(duì)于每一個(gè)當(dāng)前作業(yè),對(duì)其進(jìn)行調(diào)度時(shí),首先判斷其是否存在當(dāng)前作業(yè)的前提作業(yè)。
[0043] 在存在前提作業(yè)時(shí),,該前提作業(yè)至少為一個(gè),且該前提作業(yè)未運(yùn)行,即會(huì)對(duì)前提 作業(yè)進(jìn)行調(diào)度。此時(shí),該前提作業(yè)又會(huì)作為當(dāng)前作業(yè),繼續(xù)判斷是否存在前提作業(yè),直至當(dāng) 前作業(yè)不存在前提作業(yè)時(shí),即調(diào)度當(dāng)前作業(yè)運(yùn)行?;蛘咴谇疤嶙鳂I(yè)已運(yùn)行,且前提作業(yè)均運(yùn) 行成功時(shí),即調(diào)度該當(dāng)前作業(yè)運(yùn)行。
[0044] 本發(fā)明實(shí)施例從最終作業(yè)開(kāi)始調(diào)度,針對(duì)每一個(gè)當(dāng)前作業(yè),若存在前提作業(yè),即可 以首先對(duì)前提作業(yè)進(jìn)行調(diào)度,此時(shí)前提作業(yè)無(wú)論存在幾個(gè),均可以并發(fā)執(zhí)行,前提作業(yè)均運(yùn) 行成功時(shí),再調(diào)度當(dāng)前作業(yè)運(yùn)行。使得保證了無(wú)依賴關(guān)系的作業(yè)可以最大化并發(fā)調(diào)度,不會(huì) 受到階段限制,從而減少作業(yè)調(diào)度時(shí)間,充分的利用了計(jì)算資源,有依賴關(guān)系的作業(yè)能夠有 序調(diào)度,可以避免作業(yè)運(yùn)行數(shù)據(jù)錯(cuò)誤。
[0045] 且對(duì)于多個(gè)作業(yè)依賴同一個(gè)前提作業(yè)時(shí),該前提作業(yè)只需運(yùn)行一次,根據(jù)前提作 業(yè)的運(yùn)行狀態(tài),即前提作業(yè)是否運(yùn)行成功,即可以決定是否對(duì)前提作業(yè)進(jìn)行調(diào)度,從而進(jìn)一 步的減少作業(yè)調(diào)度時(shí)間,在提高資源利用率的同時(shí),避免了資源的浪費(fèi)。
[0046] 另外,本發(fā)明實(shí)施例中,直接可以根據(jù)預(yù)先配置的數(shù)據(jù)處理流程的各個(gè)作業(yè)之間 的依賴關(guān)系進(jìn)行調(diào)度,無(wú)需由人工劃分為多個(gè)執(zhí)行階段,節(jié)省了人工工作量,從而進(jìn)一步提 高了作業(yè)調(diào)度效率。
[0047] 其中,針對(duì)每一個(gè)進(jìn)行調(diào)度的當(dāng)前作業(yè),判斷是否存在當(dāng)前作業(yè)的前提作業(yè),是根 據(jù)作業(yè)之間的依賴關(guān)系進(jìn)行判斷的。為了方便獲取作業(yè)之間的依賴關(guān)系,作業(yè)之間的依賴 關(guān)系可以采用DAG(Directed Acyclic Graph,有向無(wú)環(huán)圖)的方式進(jìn)行表示。利用DAG表 示依賴關(guān)系,使得讀取和使用依賴關(guān)系更加便攜。
[0048] 因此根據(jù)所述數(shù)據(jù)處理流程的各個(gè)作業(yè)之間的依賴關(guān)系,從所述數(shù)據(jù)處理流程的 最終作業(yè)開(kāi)始,針對(duì)每一個(gè)當(dāng)前作業(yè),判斷是否存在當(dāng)前作業(yè)的前提作業(yè)可以具體是:
[0049] 按照所述DAG表示的數(shù)據(jù)處理流程的各個(gè)作業(yè)之間依賴關(guān)系,從所述數(shù)據(jù)處理流 程的最終作業(yè)開(kāi)始,針對(duì)每一個(gè)當(dāng)前作業(yè),判斷是否存在前提作業(yè)。
[0050] 如圖2所不,不出了一種DAG不意圖,表不一種作業(yè)依賴關(guān)系。
[0051] 由圖2可知,作業(yè)E依賴的前提作業(yè)為作業(yè)C和作業(yè)D ;作業(yè)D依賴的前提作業(yè)為 作業(yè)B ;作業(yè)B和作業(yè)C依賴的前提作業(yè)均為作業(yè)A。
[0052] 作業(yè)E需要在作業(yè)C以及作業(yè)D都運(yùn)行成功之后才能開(kāi)始運(yùn)行;作業(yè)D需要在作 業(yè)B運(yùn)行成功之后才能開(kāi)始運(yùn)行;作業(yè)B和作業(yè)C需要在作業(yè)A運(yùn)行成功之后才能開(kāi)始運(yùn) 行。
[0053] 作業(yè)A為初始作業(yè),作業(yè)E為最終作業(yè)。
[0054] 通過(guò)本發(fā)明實(shí)施例的技術(shù)方案,從作業(yè)E開(kāi)始,由于作業(yè)E存在前提作業(yè),即作業(yè) C以及作業(yè)D,因此會(huì)對(duì)作業(yè)C以及作業(yè)D進(jìn)行調(diào)度;而由于作業(yè)C存在前提作業(yè)A,因此會(huì) 對(duì)作業(yè)A進(jìn)行調(diào)度,作業(yè)A沒(méi)有前提作業(yè),因此即調(diào)度作業(yè)A運(yùn)行,作業(yè)A運(yùn)行成功之后,作 業(yè)C再運(yùn)行;
[0055] 對(duì)于作業(yè)D存在前提作業(yè)B,因此會(huì)對(duì)作業(yè)B進(jìn)行調(diào)度,作業(yè)B存在前提作業(yè)A,因 此會(huì)對(duì)前提作業(yè)A進(jìn)行調(diào)度,作業(yè)A沒(méi)有前提作業(yè),在作業(yè)未運(yùn)行時(shí),即可以調(diào)度作業(yè)A運(yùn) 行,作業(yè)A運(yùn)行成功之后,作業(yè)B再運(yùn)行,作業(yè)B運(yùn)行成功之后,作業(yè)D再運(yùn)行,而當(dāng)由于對(duì) 作業(yè)C的調(diào)度,導(dǎo)致調(diào)度A已經(jīng)運(yùn)行時(shí),此時(shí)即可以不再調(diào)度作業(yè)A運(yùn)行,而是獲取作業(yè)A 的運(yùn)行狀態(tài),在其運(yùn)行成功時(shí),直接調(diào)度作業(yè)D運(yùn)行。
[0056] 作業(yè)E的前提作業(yè),作業(yè)C以及作業(yè)D運(yùn)行成功之后,作業(yè)E再運(yùn)行。
[0057] 由此可知,通過(guò)本發(fā)明實(shí)施例,作業(yè)C的調(diào)度路徑,與作業(yè)D和作業(yè)B的調(diào)度路徑 能夠并發(fā)運(yùn)行,從而可以減少運(yùn)行時(shí)間,且可以充分利用資源,提高資源的利用率。且每一 個(gè)當(dāng)前作業(yè)需要在其前提作業(yè)運(yùn)行成功之后再運(yùn)行,從而保證了作業(yè)的有序運(yùn)行,不會(huì)有 作業(yè)先于其前提作業(yè)運(yùn)行,減少了數(shù)據(jù)錯(cuò)誤,且每一個(gè)作業(yè)可以只運(yùn)行一次,進(jìn)一步降低了 作業(yè)調(diào)度時(shí)間,避免了資源的浪費(fèi)。
[0058] 在實(shí)際應(yīng)用中,本發(fā)明實(shí)施例可以通過(guò)軟件實(shí)現(xiàn)時(shí),作業(yè)調(diào)度的執(zhí)行程序可以如 下所述:
[0059] execute-node: if node has any dependencies far depmdmcf in dependencies excute-node dependency end end if all dependencies exeute successfidfy \ no depmAmcy .excute itself return status. Else marked status 'as aborted return status end
[0060] 其中,dependency表示前提作業(yè)。
[0061] 其中,作業(yè)的運(yùn)行狀態(tài)至少可以包括未運(yùn)行、正在運(yùn)行、運(yùn)行成功、運(yùn)行失敗以及 放棄運(yùn)行,作業(yè)的運(yùn)行狀態(tài)可以存儲(chǔ)在作業(yè)運(yùn)行狀態(tài)表中。根據(jù)作業(yè)的運(yùn)行結(jié)果,可以對(duì)作 業(yè)運(yùn)行狀態(tài)表進(jìn)行更新。
[0062] 當(dāng)當(dāng)前作業(yè)存在前提作業(yè)時(shí),可以獲取前提作業(yè)的運(yùn)行狀態(tài);
[0063] 如果前提作業(yè)的運(yùn)行狀態(tài)為未運(yùn)行,則可以對(duì)該前提作業(yè)進(jìn)行調(diào)度,并更新該前 提作業(yè)的運(yùn)行狀態(tài)為正在運(yùn)行;
[0064] 如果前提作業(yè)的運(yùn)行狀態(tài)為運(yùn)行成功,則可以調(diào)度當(dāng)前作業(yè)運(yùn)行;并根據(jù)運(yùn)行結(jié) 果更新當(dāng)前作業(yè)的運(yùn)行狀態(tài)為運(yùn)行成功或運(yùn)行失敗。
[0065] 如果前提作業(yè)的運(yùn)行狀態(tài)為運(yùn)行失敗或放棄運(yùn)行時(shí),即終止對(duì)當(dāng)前作業(yè)的調(diào)度, 并更新當(dāng)前作業(yè)的運(yùn)行狀態(tài)為放棄運(yùn)行,避免繼續(xù)調(diào)度導(dǎo)致出現(xiàn)數(shù)據(jù)錯(cuò)誤。
[0066] 如果前提作業(yè)的運(yùn)行狀態(tài)為正在運(yùn)行時(shí),則可以等待該前提作業(yè)運(yùn)行結(jié)束時(shí),根 據(jù)運(yùn)行結(jié)果進(jìn)行調(diào)度,若前提作業(yè)運(yùn)行成功,則可以調(diào)度當(dāng)前作業(yè)運(yùn)行,若前提作業(yè)運(yùn)行失 敗,則終止對(duì)當(dāng)前作業(yè)的調(diào)度,并更新當(dāng)前作業(yè)的運(yùn)行狀態(tài)為放棄運(yùn)行,避免繼續(xù)調(diào)度導(dǎo)致 出現(xiàn)數(shù)據(jù)錯(cuò)誤。
[0067] 通過(guò)對(duì)運(yùn)行狀態(tài)的判斷和更新,進(jìn)一步保證了一個(gè)作業(yè)可以只運(yùn)行一次,不會(huì)重 復(fù)運(yùn)行,利用作業(yè)的運(yùn)行狀態(tài),即可以確定前提作業(yè)是否運(yùn)行,以及是否運(yùn)行成功,使得在 保證充分利用計(jì)算資源的同時(shí),可以避免計(jì)算資源的浪費(fèi)。
[0068] 下面結(jié)合圖3,本發(fā)明實(shí)施例提供的又一個(gè)實(shí)施例中,對(duì)本發(fā)明技術(shù)方案進(jìn)行詳細(xì) 描述,該方法可以包括以下幾個(gè)步驟:
[0069] 301 :獲取預(yù)先配置的數(shù)據(jù)處理流程的各個(gè)作業(yè)之間的依賴關(guān)系;
[0070] 302 :根據(jù)所述數(shù)據(jù)處理流程的各個(gè)作業(yè)之間的依賴關(guān)系,從數(shù)據(jù)處理流程的最 終作業(yè)開(kāi)始,針對(duì)每一個(gè)進(jìn)行調(diào)度的當(dāng)前作業(yè),判斷是否存在前提作業(yè),如果是,執(zhí)行步驟 303,如果否,執(zhí)行步驟308。
[0071] 303 :獲取所述前提作業(yè)的運(yùn)行狀態(tài)。
[0072] 304 :在所述前提作業(yè)的運(yùn)行狀態(tài)為未運(yùn)行時(shí),對(duì)所述前提作業(yè)進(jìn)行調(diào)度,并更新 所述前提作業(yè)的運(yùn)行狀態(tài)為正在運(yùn)行。
[0073] 305 :在所述前提作業(yè)的運(yùn)行狀態(tài)為運(yùn)行成功時(shí),調(diào)度所述當(dāng)前作業(yè)運(yùn)行,并根據(jù) 運(yùn)行結(jié)果更新所述當(dāng)前作業(yè)的運(yùn)行狀態(tài)為運(yùn)行成功或運(yùn)行失敗。
[0074] 306 :在所述前提作業(yè)的運(yùn)行狀態(tài)為正在運(yùn)行時(shí),等待所述前提作業(yè)運(yùn)行結(jié)束,返 回步驟303繼續(xù)執(zhí)行。
[0075] 307 :在所述前提作業(yè)的運(yùn)行狀態(tài)為運(yùn)行失敗或放棄運(yùn)行時(shí),終止對(duì)當(dāng)前作業(yè)的調(diào) 度,并更新當(dāng)前作業(yè)的運(yùn)行狀態(tài)為放棄運(yùn)行。
[0076] 308 :調(diào)度所述當(dāng)前作業(yè)運(yùn)行,并根據(jù)運(yùn)行結(jié)果更新所述當(dāng)前作業(yè)的運(yùn)行狀態(tài)為運(yùn) 行成功或運(yùn)行失敗。
[0077] 其中,作業(yè)的運(yùn)行狀態(tài)可以保存在作業(yè)狀態(tài)表中,以便能夠根據(jù)不同的作業(yè)的運(yùn) 行狀態(tài)執(zhí)行不同的操作。
[0078] 通過(guò)本發(fā)明實(shí)施例,不會(huì)造成作業(yè)的重復(fù)運(yùn)行,且保證了作業(yè)的有序調(diào)度,無(wú)依賴 關(guān)系的作業(yè)可以并發(fā)執(zhí)行,從而降低了作業(yè)調(diào)度時(shí)間,提高了資源利用率。
[0079] 在實(shí)際應(yīng)用中,本發(fā)明實(shí)施例可以通過(guò)軟件實(shí)現(xiàn)時(shí),作業(yè)調(diào)度的執(zhí)行程序可以如 下所述:
[0080] execute-node: get node's status if node is "正在運(yùn)行" wait for status changed else if node is " 未運(yùn)行" change status as "未運(yùn)行"
[0081] if node has any dependencies for dependency in dependencies excute-node dependency end if al! dependencies excute successfully \ no depenSmey-excute itself change status as "運(yùn)行成功or "運(yùn)行失敗" else change status as 放異運(yùn)療 md return status
[0082] 其中,在進(jìn)行作業(yè)調(diào)度時(shí),作為又一個(gè)實(shí)施例,每一個(gè)作業(yè)在一個(gè)進(jìn)程中運(yùn)行,通 過(guò)進(jìn)程執(zhí)行,實(shí)現(xiàn)作業(yè)調(diào)度和運(yùn)行。
[0083] 當(dāng)存在當(dāng)前作業(yè)的前提作業(yè)時(shí),可以創(chuàng)建運(yùn)行當(dāng)前作業(yè)進(jìn)程的子進(jìn)程,由子進(jìn)程 對(duì)所述前提作業(yè)進(jìn)行調(diào)度,運(yùn)行當(dāng)前作業(yè)的進(jìn)程即為其子進(jìn)程的父進(jìn)程。其中,每一個(gè)進(jìn)程 在其所有子進(jìn)程調(diào)度的作業(yè)均運(yùn)行成功之后執(zhí)行。
[0084] 對(duì)于任一個(gè)子進(jìn)程,在其調(diào)度的作業(yè)作為當(dāng)前作業(yè),且存在前提作業(yè)時(shí),即又作為 父進(jìn)程,進(jìn)一步創(chuàng)建子進(jìn)程對(duì)其調(diào)度作業(yè)的前提作業(yè)進(jìn)行調(diào)度。
[0085] 因此本發(fā)明實(shí)施例中,針對(duì)每一個(gè)當(dāng)前作業(yè),判斷是否存在前提作業(yè)具體是:
[0086] 在運(yùn)行當(dāng)前作業(yè)的進(jìn)程中判斷是否存在所述當(dāng)前作業(yè)依賴的前提作業(yè)。
[0087] 在存在所述當(dāng)前作業(yè)依賴的前提作業(yè)時(shí),創(chuàng)建運(yùn)行所述當(dāng)前作業(yè)進(jìn)程的子進(jìn)程, 由所述子進(jìn)程在所述前提作業(yè)未運(yùn)行時(shí),對(duì)所述前提作業(yè)進(jìn)行調(diào)度;
[0088] 在不存在所述前提作業(yè),或者所述子進(jìn)程調(diào)度的前提作業(yè)均運(yùn)行成功時(shí),由所述 當(dāng)前作業(yè)的進(jìn)程調(diào)度所述當(dāng)前作業(yè)運(yùn)行。
[0089] 當(dāng)前作業(yè)的進(jìn)程在其每個(gè)子進(jìn)程調(diào)度的作業(yè)均運(yùn)行成功之后執(zhí)行,從而便能夠保 證無(wú)依賴關(guān)系的作業(yè)的并發(fā)調(diào)度和有依賴關(guān)系的作業(yè)的有序調(diào)度。
[0090] 每個(gè)進(jìn)程都是獨(dú)立的進(jìn)行運(yùn)算,當(dāng)不同進(jìn)程需要調(diào)度同一個(gè)作業(yè)時(shí),為了避免作 業(yè)的重復(fù)調(diào)度,可以通過(guò)作業(yè)狀態(tài)表獲得每一個(gè)作業(yè)的運(yùn)行狀態(tài)。
[0091] 每個(gè)進(jìn)程在調(diào)度的作業(yè)運(yùn)行狀態(tài)為未運(yùn)行時(shí),可以對(duì)該作業(yè)進(jìn)行調(diào)度;
[0092] 每個(gè)進(jìn)程在調(diào)度的作業(yè)運(yùn)行狀態(tài)為正在運(yùn)行時(shí),可以等待調(diào)度該作業(yè)的其他進(jìn)程 運(yùn)行結(jié)束之后,再獲取其調(diào)度的作業(yè)的運(yùn)行狀態(tài);
[0093] 每個(gè)進(jìn)程在調(diào)度的作業(yè)的運(yùn)行狀態(tài)為運(yùn)行成功、運(yùn)行失敗或放棄運(yùn)行時(shí),作為子 進(jìn)程,可以將其調(diào)度的作業(yè)的運(yùn)行狀態(tài)反饋給其父進(jìn)程,使得父進(jìn)程根據(jù)子進(jìn)程反饋的運(yùn) 行狀態(tài),確定對(duì)父進(jìn)程調(diào)度的作業(yè)的進(jìn)行何種操作。
[0094] 作業(yè)的運(yùn)行狀態(tài)可以保存在作業(yè)狀態(tài)表中,因此可以將作業(yè)狀態(tài)表設(shè)置為任一個(gè) 作業(yè)的運(yùn)行狀態(tài)只允許一個(gè)進(jìn)程對(duì)其進(jìn)行更新操作,即可以保證同一個(gè)作業(yè)只能被一個(gè)進(jìn) 程運(yùn)行,且已經(jīng)運(yùn)行的作業(yè)不會(huì)被再次運(yùn)行。這樣,使得一個(gè)作業(yè)只運(yùn)行一次,不會(huì)重復(fù)運(yùn) 行,可以避免計(jì)算資源的浪費(fèi),
[0095] 本發(fā)明實(shí)施例還可以采用newlisp語(yǔ)法配置和維護(hù)作業(yè)之間的依賴關(guān)系。 newlisp是一個(gè)用于一般用途的腳本語(yǔ)言,容易學(xué)習(xí)和使用。
[0096] 同時(shí),可以采用newlisp支持的多處理器Cilk技術(shù),使得能夠充分利用多核CPU 并行運(yùn)行作業(yè),提升了硬件使用效率,可以進(jìn)一步減少作業(yè)調(diào)度時(shí)間。多核CPU可以使得多 個(gè)進(jìn)程并發(fā)執(zhí)行,每一個(gè)進(jìn)程中運(yùn)行一個(gè)作業(yè),因此多核CPU提供了作業(yè)并行運(yùn)行的條件。 Cilk技術(shù)為C/C++語(yǔ)言增加了細(xì)粒度任務(wù)支持,使其為新的和現(xiàn)有的軟件增加并行性來(lái)充 分發(fā)掘多處理器能力變得更加容易。
[0097] 圖4為本發(fā)明實(shí)施例提供的一種數(shù)據(jù)處理作業(yè)調(diào)度裝置一個(gè)實(shí)施例的流程圖,該 裝置可以包括:
[0098] 獲取模塊401,用于獲取預(yù)先配置的數(shù)據(jù)處理流程的各個(gè)作業(yè)之間的依賴關(guān)系;
[0099] 判斷模塊402,用于根據(jù)所述數(shù)據(jù)處理流程的各個(gè)作業(yè)之間的依賴關(guān)系,從數(shù)據(jù)處 理流程的目標(biāo)作業(yè)開(kāi)始,針對(duì)每一個(gè)進(jìn)行調(diào)度的當(dāng)前作業(yè),判斷是否存在當(dāng)前作業(yè)的前提 作業(yè);
[0100] 第一調(diào)度模塊403,用于在存在前提作業(yè)時(shí),且所述前提作業(yè)未運(yùn)行時(shí),對(duì)所述前 提作業(yè)進(jìn)行調(diào)度;
[0101] 第二調(diào)度模塊404,用于在不存在前提作業(yè)時(shí),調(diào)度所述當(dāng)前作業(yè)運(yùn)行;
[0102] 第三調(diào)度模塊405,用于在存在前提作業(yè),且所述前提作業(yè)均運(yùn)行成功時(shí),調(diào)度所 述當(dāng)前作業(yè)運(yùn)行。
[0103] 本發(fā)明實(shí)施例從最終作業(yè)開(kāi)始調(diào)度,針對(duì)每一個(gè)進(jìn)行調(diào)度的當(dāng)前作業(yè),若存在當(dāng) 前作業(yè)的前提作業(yè),即可以首先對(duì)前提作業(yè)進(jìn)行調(diào)度,此時(shí)前提作業(yè)無(wú)論存在幾個(gè),均可以 并發(fā)執(zhí)行,前提作業(yè)均運(yùn)行成功時(shí),再調(diào)度當(dāng)前作業(yè)運(yùn)行。使得保證了無(wú)依賴關(guān)系的作業(yè)可 以并發(fā)調(diào)度,從而減少作業(yè)調(diào)度時(shí)間,且可以充分的利用計(jì)算資源,有依賴關(guān)系的作業(yè)能夠 有序調(diào)度,可以避免作業(yè)運(yùn)行數(shù)據(jù)錯(cuò)誤。且對(duì)于多個(gè)作業(yè)依賴同一個(gè)前提作業(yè)時(shí),該前提作 業(yè)只需運(yùn)行一次,根據(jù)前提作業(yè)的運(yùn)行狀態(tài),即可以決定是否對(duì)前提作業(yè)進(jìn)行調(diào)度,從而進(jìn) 一步的減少作業(yè)調(diào)度時(shí)間,在提高資源利用率的同時(shí),避免了資源的浪費(fèi)。
[0104] 其中,針對(duì)每一個(gè)當(dāng)前作業(yè),判斷是否存在前提作業(yè),是根據(jù)作業(yè)之間的依賴關(guān)系 進(jìn)行判斷的。為了方便獲取作業(yè)之間的依賴關(guān)系,作業(yè)之間的依賴關(guān)系可以采用DAG的方 式進(jìn)行表示。
[0105] 因此所述獲取模塊可以包括:
[0106] 獲取單元,用于獲取預(yù)先配置的表示數(shù)據(jù)處理流程的各個(gè)作業(yè)之間的依賴關(guān)系的 DAG ;
[0107] 所述判斷模塊可以包括:
[0108] 判斷單元,用于按照所述DAG表示的所述數(shù)據(jù)處理流程的各個(gè)作業(yè)之間的依賴關(guān) 系,從所述數(shù)據(jù)處理流程的最終作業(yè)開(kāi)始,針對(duì)每一個(gè)當(dāng)前作業(yè),判斷是否存在前提作業(yè)。
[0109] 其中,作業(yè)的運(yùn)行狀態(tài)至少可以包括未運(yùn)行、正在運(yùn)行、運(yùn)行成功、運(yùn)行失敗以及 放棄運(yùn)行,作業(yè)的運(yùn)行狀態(tài)可以存儲(chǔ)在作業(yè)運(yùn)行狀態(tài)表中。根據(jù)作業(yè)的運(yùn)行結(jié)果,可以對(duì)作 業(yè)運(yùn)行狀態(tài)表進(jìn)行更新。
[0110] 作為又一個(gè)實(shí)施例,如圖5所示,該第一調(diào)度模塊401可以包括:
[0111] 狀態(tài)獲取單元501,用于在存在當(dāng)前作業(yè)的前提作業(yè)時(shí),獲取所述前提作業(yè)的運(yùn)行 狀態(tài);所述運(yùn)行狀態(tài)至少包括未運(yùn)行、正在運(yùn)行、運(yùn)行成功、運(yùn)行失敗以及放棄運(yùn)行;
[0112] 第一調(diào)度單元502,用于在所述前提作業(yè)的運(yùn)行狀態(tài)為未運(yùn)行時(shí),對(duì)所述前提作業(yè) 進(jìn)行調(diào)度,并更新所述前提作業(yè)的運(yùn)行狀態(tài)為正在運(yùn)行;
[0113] 所述第三調(diào)度模塊405包括:
[0114] 第三調(diào)度單元503,用于在所述前提作業(yè)的運(yùn)行狀態(tài)為運(yùn)行成功時(shí),調(diào)度所述當(dāng)前 作業(yè)運(yùn)行,并根據(jù)運(yùn)行結(jié)果更新所述當(dāng)前作業(yè)的運(yùn)行狀態(tài)為運(yùn)行成功或運(yùn)行失敗。
[0115] 如果前提作業(yè)的運(yùn)行狀態(tài)為運(yùn)行失敗、放棄運(yùn)行或者正在運(yùn)行時(shí),作為又一個(gè)實(shí) 施例,如圖5中所以,該裝置還可以包括:
[0116] 第四調(diào)度模塊406,用于在所述前提作業(yè)的運(yùn)行狀態(tài)為正在運(yùn)行時(shí),等待所述前提 作業(yè)運(yùn)行結(jié)束時(shí),觸發(fā)所述狀態(tài)獲取單元運(yùn)行;
[0117] 第五調(diào)度模塊407,用于在所述前提作業(yè)的運(yùn)行狀態(tài)為運(yùn)行失敗或放棄運(yùn)行時(shí),終 止對(duì)當(dāng)前作業(yè)的調(diào)度,并更新當(dāng)前作業(yè)的運(yùn)行狀態(tài)為放棄運(yùn)行。
[0118] 作業(yè)的運(yùn)行狀態(tài)可以保存在作業(yè)狀態(tài)表中,以便能夠根據(jù)不同的作業(yè)的運(yùn)行狀態(tài) 執(zhí)行不同的操作。
[0119] 通過(guò)本發(fā)明實(shí)施例,不會(huì)造成作業(yè)的重復(fù)運(yùn)行,且保證了作業(yè)的有序調(diào)度,無(wú)依賴 關(guān)系的作業(yè)可以并發(fā)執(zhí)行,從而減少了作業(yè)調(diào)度時(shí)間,提高了資源利用率。
[0120] 其中,在進(jìn)行作業(yè)調(diào)度時(shí),作為又一個(gè)實(shí)施例,每一個(gè)作業(yè)在一個(gè)進(jìn)程中運(yùn)行,通 過(guò)進(jìn)程執(zhí)行,實(shí)現(xiàn)作業(yè)調(diào)度和運(yùn)行。當(dāng)存在所述當(dāng)前作業(yè)依賴的前提作業(yè)時(shí),可以創(chuàng)建運(yùn)行 所述當(dāng)前作業(yè)進(jìn)程的子進(jìn)程,由所述子進(jìn)程對(duì)所述前提作業(yè)進(jìn)行調(diào)度。
[0121] 因此,作為又一個(gè)實(shí)施例,該裝置還可以包括:
[0122] 子進(jìn)程創(chuàng)建模塊,用于當(dāng)存在所述當(dāng)前作業(yè)的前提作業(yè)時(shí),創(chuàng)建運(yùn)行所述當(dāng)前作 業(yè)進(jìn)程的子進(jìn)程,由所述子進(jìn)程運(yùn)行所述前提作業(yè);
[0123] 其中,每一個(gè)進(jìn)程在其每一個(gè)子進(jìn)程均執(zhí)行成功之后執(zhí)行,從而便能夠保證無(wú)依 賴關(guān)系的作業(yè)的并發(fā)調(diào)度和有依賴關(guān)系的作業(yè)的有序調(diào)度。
[0124] 則所述判斷模塊402具針對(duì)每一個(gè)當(dāng)前作業(yè),判斷是否存在當(dāng)前作業(yè)的前提作業(yè) 具體是在運(yùn)行當(dāng)調(diào)度作業(yè)的進(jìn)程中判斷是否存在所述當(dāng)前作業(yè)的前提作業(yè);
[0125] 所述第一調(diào)度模塊403具體用于在存在的前提作業(yè)時(shí),由運(yùn)行所述當(dāng)前作業(yè)進(jìn)程 的子進(jìn)程在所述前提作業(yè)未運(yùn)行時(shí),對(duì)所述前提作業(yè)進(jìn)行調(diào)度;
[0126] 所述第二調(diào)度模塊404具體用于在不存在所述前提作業(yè),或者所述子進(jìn)程調(diào)度的 前提作業(yè)均運(yùn)行成功時(shí),由所述當(dāng)前作業(yè)的進(jìn)程調(diào)度所述當(dāng)前作業(yè)運(yùn)行。
[0127] 另外,該裝置還可以包括數(shù)據(jù)存儲(chǔ)模塊用于存儲(chǔ)所述數(shù)據(jù)處理流程的各個(gè)作業(yè)的 運(yùn)行狀態(tài),具體可以將各個(gè)作業(yè)的運(yùn)行狀態(tài)存儲(chǔ)在作業(yè)狀態(tài)表中;
[0128] 作業(yè)狀態(tài)表中的任一個(gè)作業(yè)的運(yùn)行狀態(tài)只允許一個(gè)進(jìn)程對(duì)其進(jìn)行更新操作,從而 即可以保證同一個(gè)作業(yè)只能被一個(gè)進(jìn)程運(yùn)行,且已經(jīng)運(yùn)行的作業(yè)不會(huì)被再次運(yùn)行。
[0129] 在實(shí)際應(yīng)用中,本發(fā)明實(shí)施例所述的作業(yè)調(diào)度裝置可以應(yīng)用于任一個(gè)可以對(duì)作業(yè) 進(jìn)行處理的計(jì)算節(jié)點(diǎn)中。
[0130] 該計(jì)算節(jié)點(diǎn)支持多處理器Cilk技術(shù),使得能夠充分利用多核CPU并行運(yùn)行作業(yè), 提升了硬件使用效率,可以進(jìn)一步減少作業(yè)調(diào)度時(shí)間。
[0131] 以上所描述的裝置實(shí)施例僅僅是示意性的,其中所述作為分離部件說(shuō)明的單元可 以是或者也可以不是物理上分開(kāi)的,作為單元顯示的部件可以是或者也可以不是物理單 元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其 中的部分或者全部模塊來(lái)實(shí)現(xiàn)本實(shí)施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性 的勞動(dòng)的情況下,即可以理解并實(shí)施。
[0132] 通過(guò)以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到各實(shí)施方式可 借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)硬件?;谶@樣的理解,上 述技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該 計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,如R0M/RAM、磁碟、光盤等,包括若干指 令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行各個(gè)實(shí)施 例或者實(shí)施例的某些部分所述的方法。
[0133] 最后應(yīng)說(shuō)明的是:以上實(shí)施例僅用以說(shuō)明本發(fā)明的技術(shù)方案,而非對(duì)其限制;盡 管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說(shuō)明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然 可以對(duì)前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替 換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精 神和范圍。
【主權(quán)項(xiàng)】
1. 一種數(shù)據(jù)處理作業(yè)調(diào)度方法,其特征在于,包括: 獲取預(yù)先配置的數(shù)據(jù)處理流程的各個(gè)作業(yè)之間的依賴關(guān)系; 根據(jù)所述數(shù)據(jù)處理流程的各個(gè)作業(yè)之間的依賴關(guān)系,從所述數(shù)據(jù)處理流程的最終作業(yè) 開(kāi)始,針對(duì)每一個(gè)進(jìn)行調(diào)度的當(dāng)前作業(yè),判斷是否存在當(dāng)前作業(yè)的前提作業(yè); 在存在前提作業(yè),且所述前提作業(yè)未運(yùn)行時(shí),對(duì)所述前提作業(yè)進(jìn)行調(diào)度; 在不存在前提作業(yè),或者所述前提作業(yè)均運(yùn)行成功時(shí),調(diào)度當(dāng)前作業(yè)運(yùn)行; 其中,當(dāng)前作業(yè)運(yùn)行時(shí)依賴當(dāng)前作業(yè)的前提作業(yè)的運(yùn)行結(jié)果。2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述在存在前提作業(yè),且所述前提作業(yè)未 運(yùn)行時(shí),對(duì)所述前提作業(yè)進(jìn)行調(diào)度包括: 在存在前提作業(yè)時(shí),獲取所述前提作業(yè)的運(yùn)行狀態(tài);所述運(yùn)行狀態(tài)至少包括未運(yùn)行、正 在運(yùn)行、運(yùn)行成功、運(yùn)行失敗以及放棄運(yùn)行; 在所述前提作業(yè)的運(yùn)行狀態(tài)為未運(yùn)行時(shí),對(duì)所述前提作業(yè)進(jìn)行調(diào)度,并更新所述前提 作業(yè)的運(yùn)行狀態(tài)為正在運(yùn)行; 所述在所述前提作業(yè)運(yùn)行成功時(shí),調(diào)度所述當(dāng)前作業(yè)運(yùn)行包括: 在所述前提作業(yè)的運(yùn)行狀態(tài)為運(yùn)行成功時(shí),調(diào)度所述當(dāng)前作業(yè)運(yùn)行,并根據(jù)運(yùn)行結(jié)果 更新所述當(dāng)前作業(yè)的運(yùn)行狀態(tài)為運(yùn)行成功或運(yùn)行失敗。3. 根據(jù)權(quán)利要求2所述的方法,其特征在于,在所述前提作業(yè)的運(yùn)行狀態(tài)為正在運(yùn)行 時(shí),所述方法還包括: 等待所述前提作業(yè)運(yùn)行結(jié)束時(shí),返回執(zhí)行所述獲取所述前提作業(yè)的運(yùn)行狀態(tài)的步驟; 在所述前提作業(yè)的運(yùn)行狀態(tài)為運(yùn)行失敗或放棄運(yùn)行時(shí),所述方法還包括: 終止對(duì)當(dāng)前作業(yè)的調(diào)度,并更新當(dāng)前作業(yè)的運(yùn)行狀態(tài)為放棄運(yùn)行。4. 根據(jù)權(quán)利要求1~3任一項(xiàng)所述的方法,其特征在于,每一個(gè)作業(yè)在一個(gè)進(jìn)程中運(yùn) 行; 當(dāng)存在所述當(dāng)前作業(yè)的前提作業(yè)時(shí),所述方法還包括: 創(chuàng)建運(yùn)行所述當(dāng)前作業(yè)的進(jìn)程的子進(jìn)程,由所述子進(jìn)程運(yùn)行所述前提作業(yè); 其中,每一個(gè)進(jìn)程在其所有子進(jìn)程對(duì)應(yīng)的作業(yè)均運(yùn)行成功之后執(zhí)行。5. 根據(jù)權(quán)利要求4所述的方法,其特征在于,所述數(shù)據(jù)處理流程的各個(gè)作業(yè)之間的依 賴關(guān)系通過(guò)有向無(wú)環(huán)圖表示; 獲取預(yù)先配置的數(shù)據(jù)處理流程的各個(gè)作業(yè)之間的依賴關(guān)系包括: 獲取預(yù)先配置的表示數(shù)據(jù)處理流程的各個(gè)作業(yè)之間的依賴關(guān)系的有向無(wú)環(huán)圖; 所述根據(jù)所述數(shù)據(jù)處理流程的各個(gè)作業(yè)之間的依賴關(guān)系,從所述數(shù)據(jù)處理流程的最終 作業(yè)開(kāi)始,針對(duì)每一個(gè)當(dāng)前作業(yè),判斷是否存在當(dāng)前作業(yè)的前提作業(yè)包括: 按照所述有向無(wú)環(huán)圖表示的所述數(shù)據(jù)處理流程的各個(gè)作業(yè)之間的依賴關(guān)系,從所述數(shù) 據(jù)處理流程的最終作業(yè)開(kāi)始,針對(duì)每一個(gè)當(dāng)前作業(yè),判斷是否存在當(dāng)前作業(yè)的前提作業(yè)。6. -種數(shù)據(jù)處理作業(yè)調(diào)度裝置,其特征在于,包括: 獲取模塊,用于獲取預(yù)先配置的數(shù)據(jù)處理流程的各個(gè)作業(yè)之間的依賴關(guān)系; 判斷模塊,用于根據(jù)所述數(shù)據(jù)處理流程的各個(gè)作業(yè)之間的依賴關(guān)系,從所述數(shù)據(jù)處理 流程的最終作業(yè)開(kāi)始,針對(duì)每一個(gè)進(jìn)行調(diào)度的當(dāng)前作業(yè),判斷是否存在當(dāng)前作業(yè)的前提作 業(yè); 第一調(diào)度模塊,用于在存在前提作業(yè)時(shí),且所述前提作業(yè)未運(yùn)行時(shí),對(duì)所述前提作業(yè)進(jìn) 行調(diào)度; 第二調(diào)度模塊,用于在不存在前提作業(yè)時(shí),調(diào)度所述當(dāng)前作業(yè)運(yùn)行; 第三調(diào)度模塊,用于在存在前提作業(yè),且所述前提作業(yè)均運(yùn)行成功時(shí),調(diào)度所述當(dāng)前作 業(yè)運(yùn)行; 其中,當(dāng)前作業(yè)運(yùn)行時(shí)依賴所述當(dāng)前作業(yè)的前提作業(yè)的運(yùn)行結(jié)果。7. 根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述第一調(diào)度模塊包括: 狀態(tài)獲取單元,用于在存在當(dāng)前作業(yè)的前提作業(yè)時(shí),獲取所述前提作業(yè)的運(yùn)行狀態(tài);所 述運(yùn)行狀態(tài)至少包括未運(yùn)行、正在運(yùn)行、運(yùn)行成功、運(yùn)行失敗以及放棄運(yùn)行; 第一調(diào)度單元,用于在所述前提作業(yè)的運(yùn)行狀態(tài)為未運(yùn)行時(shí),對(duì)所述前提作業(yè)進(jìn)行調(diào) 度,并更新所述前提作業(yè)的運(yùn)行狀態(tài)為正在運(yùn)行; 所述第三調(diào)度模塊包括: 第三調(diào)度單元,用于在所述前提作業(yè)的運(yùn)行狀態(tài)為運(yùn)行成功時(shí),調(diào)度所述當(dāng)前作業(yè)運(yùn) 行,并根據(jù)運(yùn)行結(jié)果更新所述當(dāng)前作業(yè)的運(yùn)行狀態(tài)為運(yùn)行成功或運(yùn)行失敗。8. 根據(jù)權(quán)利要求7所述的裝置,其特征在于,還包括: 第四調(diào)度模塊,用于在所述前提作業(yè)的運(yùn)行狀態(tài)為正在運(yùn)行時(shí),等待所述前提作業(yè)運(yùn) 行結(jié)束時(shí),觸發(fā)所述狀態(tài)獲取單元運(yùn)行; 第五調(diào)度模塊,用于在所述前提作業(yè)的運(yùn)行狀態(tài)為運(yùn)行失敗或放棄運(yùn)行時(shí),終止對(duì)當(dāng) 前作業(yè)的調(diào)度,并更新當(dāng)前作業(yè)的運(yùn)行狀態(tài)為放棄運(yùn)行。9. 根據(jù)權(quán)利要求6~8任一項(xiàng)所述的裝置,其特征在于,每一個(gè)作業(yè)在一個(gè)進(jìn)程中運(yùn) 行; 所述裝置還包括: 子進(jìn)程創(chuàng)建模塊,用于當(dāng)存在所述當(dāng)前作業(yè)的前提作業(yè)時(shí),創(chuàng)建運(yùn)行所述當(dāng)前作業(yè)進(jìn) 程的子進(jìn)程,由所述子進(jìn)程運(yùn)行所述前提作業(yè); 其中,每一個(gè)進(jìn)程在其每一個(gè)子進(jìn)程調(diào)度的作業(yè)均運(yùn)行成功之后執(zhí)行。10. 根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述數(shù)據(jù)處理流程的各個(gè)作業(yè)之間的依 賴關(guān)系通過(guò)有向無(wú)環(huán)圖表示; 所述獲取模塊包括: 獲取單元,用于獲取預(yù)先配置的表示數(shù)據(jù)處理流程的各個(gè)作業(yè)之間的依賴關(guān)系的有向 無(wú)環(huán)圖; 所述判斷模塊包括: 判斷單元,用于按照所述有向無(wú)環(huán)圖表示的所述數(shù)據(jù)處理流程的各個(gè)作業(yè)之間的依 賴關(guān)系,從所述數(shù)據(jù)處理流程的最終作業(yè)開(kāi)始,針對(duì)每一個(gè)當(dāng)前作業(yè),判斷是否存在前提作 業(yè)。
【文檔編號(hào)】G06F9/48GK105912387SQ201510526423
【公開(kāi)日】2016年8月31日
【申請(qǐng)日】2015年8月25日
【發(fā)明人】許鷺清, 陳抒
【申請(qǐng)人】樂(lè)視網(wǎng)信息技術(shù)(北京)股份有限公司