數據處理作業調度方法、裝置及系統的制作方法
【專利摘要】本發明實施例提供一種數據處理作業調度方法、裝置及系統,所述方法包括:獲取預先配置的數據處理流程的各個作業之間的依賴關系;初始化數據處理流程的各個作業的運行狀態為不可運行,生成第一更新指令;響應所述第一更新指令,將不存在前提作業的運行狀態更新為可以運行;調度運行狀態為可以運行的作業運行,根據運行結果更新所述作業的運行狀態為運行成功或運行失敗,并生成第二更新指令;響應所述第二更新指令,將存在前提作業,且所述前提作業的運行狀態均為運行成功的作業的運行狀態,更新為可以運行。本發明實施例減少作業調度時間,提高了作業調度效率。
【專利說明】
數據處理作業調度方法、裝置及系統
技術領域
[0001] 本發明實施例涉及計算機技術領域,尤其涉及一種數據處理作業調度方法、裝置 及系統。
【背景技術】
[0002] 在進行數據處理的流程中,特別是大數據領域比較復雜的數據處理流程中,通常 是將數據處理流程劃分為若干作業對數據進行處理。
[0003] 這些作業之間有的需要依賴其他作業的正確運行結果才能夠運行,有的作業之間 并無這種依賴關系,可以并發運行。而整個數據處理流程的全部作業均運行成功,數據處理 流程才會認為運行成功,如果一個作業依賴的前提作業還未運行或運行失敗,該作業即開 始執行,則會造成數據錯誤,數據處理流程也會認為運行失敗,因此需要對作業進行有效的 調度。
[0004] 現有技術的一種數據處理作業調度方法中,是由技術人員根據數據處理流程中各 個作業之間的依賴關系,首先將各個作業劃分多個執行階段。根據依賴關系可知,這些執行 階段之間存在執行順序。在進行作業調度時,即按照執行階段的執行順序,分階段的進行作 業調度,每一個階段的作業全部運行成功之后,再調度下一個階段中的作業執行。比如,假 設數據處理流程包括作業A、B、C、D、E,作業A為數據處理流程中的初始作業,作業E為最 終的作業,作業B和作業C分別依賴作業A的運行結果,作業D依賴作業B的運行結果,作 業E依賴作業C和作業D的執行結果。因此根據各個作業之間的依賴關系,劃分的執行階 段為:第一個執行階段包括作業A ;由于作業C分別與作業B和作業D不存在依賴關系,可 以放在一個執行階段并發執行,而作業B和作業D之間存在依賴關系,不能放在一個執行階 段執行,因此第二執行階段只包括作業B和作業C,作業D劃分為第三執行階段;第四執行 階段即包括作業E。
[0005] 由上述描述過程可知,現有的數據處理作業調度方法,雖然可以保證作業有序執 行,不會造成數據錯誤,但是分階段執行這種方式,使得作業調度效率較低,比如上述假設 中,作業B和作業D之間存在依賴關系,作業B運行成功之后,作業D即可以運行了,但是按 照分階段執行的方式,作業C若未運行完成,作業D仍無法運行,這就會導致作業調度時間 較長,降低了作業調度效率。
【發明內容】
[0006] 本發明實施例提供一種數據處理作業調度方法、裝置及系統,用以解決現有技術 中作業調度時間長,作業調度效率低的技術問題。
[0007] 本發明實施例提供一種數據處理作業調度方法,包括:
[0008] 獲取預先配置的數據處理流程的各個作業之間的依賴關系;
[0009] 初始化數據處理流程的各個作業的運行狀態為不可運行,生成第一更新指令;
[0010] 響應所述第一更新指令,按照所述數據處理流程的各個作業之間的依賴關系,將 不存在前提作業的作業的運行狀態更新為可以運行;
[0011] 調度運行狀態為可以運行的作業運行,根據運行結果更新所述作業的運行狀態為 運行成功或運行失敗,并生成第二更新指令;
[0012] 響應所述第二更新指令,按照所述數據處理流程的各個作業之間的依賴關系,將 存在前提作業,且所述前提作業的運行狀態均為運行成功的作業的運行狀態,更新為可以 運行。
[0013] 本發明實施例提供一種數據處理作業調度裝置,包括:
[0014] 作業調度模塊,用于初始化數據處理流程的各個作業的運行狀態為不可運行,生 成第一更新指令;調度運行狀態為可以運行的作業運行,根據運行結果更新所述作業的運 行狀態為運行成功或運行失敗,并生成第二更新指令;
[0015] 所述規則確定模塊,用于獲取預先配置的數據處理流程的各個作業之間的依賴關 系;響應所述第一更新指令,按照所述數據處理流程的各個作業之間的依賴關系,將不存在 前提作業的作業的運行狀態更新為可以運行;響應所述第二更新指令,按照所述數據處理 流程的各個作業之間的依賴關系,將存在前提作業,且所述前提作業的運行狀態均為運行 成功的作業的運行狀態,更新為可以運行。
[0016] 本發明提供一種數據處理作業調度系統,包括至少一個作業調度節點、至少一個 規則推理節點以及多個計算節點;
[0017] 任一個作業調度節點,用于初始化數據處理流程的各個作業的運行狀態為不可運 行,生成第一更新指令;將運行狀態為可以運行的作業提供給所述多個計算節點,由至少一 個計算節點運行至少一個運行狀態為可以運行的作業;根據運行結果更新所述作業的運行 狀態為運行成功或運行失敗,并生成第二更新指令;
[0018] 任一個規則推理節點,用于獲取預先配置的數據處理流程的各個作業之間的依賴 關系;響應所述第一更新指令,按照所述數據處理流程的各個作業之間的依賴關系,將不存 在前提作業的作業的運行狀態更新為可以運行;響應所述第二更新指令,按照所述數據處 理流程的各個作業之間的依賴關系,將存在前提作業,且所述前提作業的運行狀態均為運 行成功的作業的運行狀態,更新為可以運行;
[0019] 所述計算節點,用于運行所述作業調度節點提供的運行狀態為可以運行的作業。
[0020] 本發明實施例提供的數據處理作業調度方法、裝置及系統,通過規則推導的方式, 根據作業之間依賴關系,可以更新各個作業的運行狀態,從而存在運行狀態為可以運行的 作業時,即可以該調度運行狀態為可以運行的作業運行。既可以保證存在依賴關系的作業 能夠有序執行,不會出現數據錯誤,且當前作業在其前提作業運行成功之后,即可以運行, 無需等待,減少了作業調度時間,同時無依賴關系的作業可以并發執行,進一步減少了作業 調度時間,提高了作業調度的效率。
【附圖說明】
[0021] 為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現 有技術描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖是本發 明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根 據這些附圖獲得其他的附圖。
[0022] 圖1為本發明數據處理作業調度方法一實施例的流程圖;
[0023] 圖2為本發明提供的DAG(Directed Acyclic Graph,有向無環圖)的一種示意圖;
[0024] 圖3為本發明數據處理作業調度方法又一實施例流程圖;
[0025] 圖4為本發明數據處理作業調度裝置一實施例結構示意圖;
[0026] 圖5為本發明數據處理作業調度裝置又一實施例結構示意圖;
[0027] 圖6為本發明數據處理作業調度裝置又一實施例結構示意圖;
[0028] 圖7為本發明數據處理作業調度系統一實施例結構示意圖;
[0029] 圖8為本發明數據處理作業調度系統又一實施例結構示意圖。
【具體實施方式】
[0030] 為使本發明實施例的目的、技術方案和優點更加清楚,下面將結合本發明實施例 中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是 本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員 在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
[0031] 正如【背景技術】中所述,現有技術中分階段的數據處理作業調度方法,為了保證作 業能夠有序執行,在一個執行階段中的作業未運行成功時,下一個執行階段中的作業將無 法調度運行,這就會導致作業調度時間較長,降低了作業調度效率。特別是當數據處理流程 中作業較多,作業之間的依賴關系很復雜時,作業調度效率將受到很大的影響,且由于執行 階段需要人工來劃分,工作量較大,也會影響作業調度時間,且執行階段劃分的準確性也無 法完全保證。
[0032] 為了解決現有技術中存在的技術問題,發明人經過不斷的研究發現,為了保證作 業調度時間,提高作業調度效率,作業有序執行的同時,就要減少作業等待執行的時間。
[0033] 發明人進一步發現,為了減少作業等待執行時間,又保證作業有序的執行,可以將 無依賴關系的作業最大化的并行運行,也即將無依賴關系的作業同時運行,將會大大提高 作業調度效率,且可以充分的利用計算資源。
[0034] 因此,發明人基于這一創造性的思維,提出了本發明的技術方案:
[0035] 在本發明實施例中,首先將數據處理流程的各個作業的運行初始化為不可運行; 根據預先配置的作業之間依賴關系,再將不存在前提作業的作業的運行狀態更新為可以運 行;從而根據作業的運行狀態,可以調度運行狀態為可以運行的作業運行,并根據運行結果 更新所述作業的運行狀態為運行成功或運行失敗;根據作業之間的依賴關系,可以將存在 前提作業,且所述前提作業的運行狀態均為運行成功的作業的運行狀態,更新為可以運行。 采用根據各個作業的運行狀態進行調度的方式,不存在前提作業的作業首先運行,每一個 作業在前提作業均運行成功之后運行,保證了作業能夠有序執行;且當前作業在其前提作 業運行成功之后,即可以運行,無需等待,減少了作業調度時間;且由于作業的前提作業均 運行成功,作業即可以運行,使得無依賴關系的作業,可以最大化的并發運行,進一步減少 了作業調度時間,提高了作業調度的效率。同時,作業的并發運行,也使得計算資源也得到 了充分利用。
[0036] 且本發明實施例中,直接根據預先配置的數據處理流程的各個作業之間的依賴關 系進行調度,無需由人工劃分為多個執行階段,也節省了人工工作量,從而進一步提高了作 業調度效率。
[0037] 下面結合附圖對本發明技術方案進行詳細描述。
[0038] 圖1為本發明實施例提供的一種數據處理作業調度方法一個實施例的流程圖,該 方法可以包括以下幾個步驟:
[0039] 101 :獲取預先配置的數據處理流程的各個作業之間的依賴關系。
[0040] 102 :初始化數據處理流程的各個作業的運行狀態為不可運行,生成第一更新指 令。
[0041] 103:響應所述第一更新指令,按照所述數據處理流程的各個作業之間的依賴關 系,將不存在前提作業的作業的運行狀態更新為可以運行。
[0042] 按照所述數據處理流程的各個作業之間的依賴關系,可以確定出不存在前提作業 的作業,因此通過響應第一更新指令,可以將該不存在前提作業的作業的運行狀態更新為 可以運行。
[0043] 104:調度運行狀態為可以運行的作業運行,根據運行結果更新所述作業的運行狀 態為運行成功或運行失敗,并生成第二更新指令。
[0044] 105 :響應所述第二更新指令,按照所述數據處理流程的各個作業之間的依賴關 系,將存在前提作業,且所述前提作業的運行狀態均為運行成功的作業的運行狀態,更新為 可以運行。
[0045] 按照所述數據處理流程的各個作業之間的依賴關系,可以確定出存在前提作業的 作業。通過響應第二更新指令,可以將存在前提作業的作業,且所述前提作業的運行狀態均 為運行成功的作業的運行狀態,更新為可以運行。
[0046] -個數據處理流程中的作業之間存在依賴關系,根據作業之間的依賴關系,最終 會匯聚到一個作業,即數據處理流程中最后一個作業。
[0047] 前提作業是指任一個作業需要依賴其運行結果才能運行的作業。例如作業B依賴 作業A的運行結果,作業A即為作業B的依賴的前提作業。
[0048] 由作業之間的依賴關系形成的拓撲結構中,部分作業可能是不存在依賴關系的, 這些不存在依賴關系的作業是可以并行執行的。
[0049] 因此,本發明實施例中,為數據處理流程中的各個作業記錄運行狀態,運行狀態至 少包括不可運行、可以運行、運行成功、運行失敗或放棄運行。如果作業的運行狀態為可以 運行,則可以調度運行狀態為可以運行的作業運行;
[0050] 如果運行狀態為不可運行,則處于等待狀態,等待可以運行的作業。
[0051] 在數據處理流程處理過程中,首先初始化數據處理流程的各個作業的運行狀態為 不可運行,之后生成第一更新指令;檢測到第一更新指令之后,可以將數據處理流程中不存 在前提作業的作業的運行狀態更新為可以運行。從而即可以調度運行狀態為可以運行的作 業運行,并可以根據運行結果更新所述作業的運行狀態為運行成功或運行失敗,同時生成 第二更新指令;檢測到第二更新指令之后,即可以將存在前提作業,且所述前提作業的運行 狀態均為運行成功的作業的運行狀態,更新為可以運行。
[0052] 本發明實施例從不存在前提作業的作業,也即初始作業開始調度運行,通過規則 推導的方式,根據作業之間依賴關系,可以更新各個作業的運行狀態,從而可以調度運行狀 態為可以運行的作業運行。既可以保證存在依賴關系的作業能夠有序執行,不會出現數據 錯誤,同時使得無依賴關系的作業可以并發執行,減少了作業調時間,提高作業調度效率, 且提高了資源的利用率。
[0053] 在進行規則推導時,是根據作業之間的依賴關系進行的,且為了避免死循環,在數 據處理流程的各個作業的運行狀態均為運行成功、運行失敗或放棄運行時,即可以結束流 程,停止作業調度。
[0054] 其中,為了方便區分作業的運行狀態,本發明實施例中,通過響應所述第二更新指 令,還可以將存在前提作業,且任一前提作業運行狀態為運行失敗或放棄運行的作業的運 行狀態,更新為放棄運行。
[0055] 從而,如果檢測到的作業為放棄運行,即不會運行該作業,從而可以減少計算步 驟。
[0056] 在實際應用中,本發明實施例可以通過軟件實現時,響應第二更新指令更新作業 運行狀態的執行程序可以如下所述:
[0057] generate-rules : if node has any dependencies for dependency in dependencies generate-rule dependenc\' end add-rule "if all deiipenclenci.es' status is then mark this node as 可以運行" add-rule "if ail denpendencies!status is or then mark this node as 放異運《亍" els:0 add-rule "if all nodes' status is th雜 mark this node a.s 卞廠以i在行 end
[0058] 其中,node表示作業,dependency即表示前提作業。
[0059] 數據處理流程的各個作業可以保存在數據庫,以作業狀態表的形式存儲。在進行 作業調度時,通過讀取作業狀態表,獲得各個作業的運行狀態,進而將運行狀態為可以運行 的作業調度運行,并根據運行結果,修改作業狀態表中所述作業的運行狀態。
[0060] 其中,將不存在前提作業的作業的運行狀態更新為可以運行,以及將存在前提作 業,且所述前提作業的運行狀態均為運行成功的作業的運行狀態的狀態推導過程,是按照 作業之間的依賴關系進行推導。
[0061] 為了清楚表示作業之間的依賴關系,且可以方便獲取作業之間的依賴關系,作業 之間的依賴關系可以采用DAG(Directed Acyclic Graph,有向無環圖)的方式進行表示,當 然也可以采用其他方式表示,比如采用關系樹來表示,關系樹中根節點依賴葉子節點運行, 任一個前提作業可以作為依賴其運行結果的作業的葉子節點,依賴前提作業運行結果的作 業可以作為該前提作業的根節點。
[0062] 因此,步驟102中響應所述第一更新指令,將不存在前提作業的作業的運行狀態 更新為可以運行可以是:
[0063] 響應所述第一更新指令,按照DAG表示的所述數據處理流程的各個作業的依賴關 系,將不存在前提作業的作業的運行狀態更新為可以運行;
[0064] 步驟104中響應所述第二更新指令,將存在前提作業,且所述前提作業的運行狀 態均為運行成功的作業的運行狀態,更新為可以運行可以是:
[0065] 響應所述第二更新指令,按照DAG表示的所述數據處理流程的各個作業之間的依 賴關系,將存在前提作業,且所述前提作業的運行狀態均為運行成功的作業的運行狀態,更 新為可以運行。
[0066] 如圖2所不,不出了一種DAG不意圖,表不一種作業依賴關系。
[0067] 由圖2可知,作業E依賴的前提作業為作業C和作業D ;作業D依賴的前提作業為 作業B ;作業B和作業C依賴的前提作業均為作業A。
[0068] 作業E需要在作業C以及作業D都運行成功之后才能開始運行;作業D需要在作 業B運行成功之后才能開始運行;作業B和作業C需要在作業A運行成功之后才能開始運 行。
[0069] 下面以結合圖2所述的作業依賴關系,來詳細描述本發明實施例的技術方案,如 圖3所示提供的本發明數據處理作業調度方法又一個實例的流程圖中:
[0070] 301 :初始化數據處理流程的各個作業的運行狀態為不可運行,生成第一更新指 令。
[0071] 此時作業A、作業B、作業C、作業D以及作業E的運行狀態均為不可運行。作業A、 作業B、作業C、作業D以及作業E之間的依賴關系預先配置好,可以采用DAG表示。
[0072] 302 :響應第一更新指令,將作業A的運行狀態更新為可以運行。
[0073] 根據預先配置的各個作業之間的依賴關系,可知作業A即為不存在前提作業的作 業。
[0074] 303 :檢測存在可以運行的作業A,調度作業A運行。
[0075] 304 :根據作業A的運行結果,更新作業A的運行狀態為運行成功,并生成第二更新 指令。
[0076] 本實施例中,假設作業A的運行結果為運行成功。
[0077] 305 :響應第二更新指令,將作業B和作業C的運行狀態更新為可以運行。
[0078] 根據預先配置的各個作業之間的依賴關系,可知作業B和作業C的前提作業為作 業A,且作業A的運行狀態為運行成功,因此可以推導得到作業B以及作業C可以運行,將其 狀態進行更新。
[0079] 306 :檢測存在可以運行的作業B以及作業C,調度作業B和調度C運行。
[0080] 307 :根據作業B和作業C的運行結果,更新作業B的運行狀態為運行成功,更新作 業C的運行狀態為運行成功,并生成第二更新指令。
[0081 ] 本實施例中,假設作業B以及作業B均運行成功。
[0082] 308 :響應第二更新指令,將作業D的運行狀態更新為可以運行。
[0083] 由于作業E依賴與作業B和作業D的運行結果,由于作業D未運行,因此無法推導 作業E的運行狀態,因此仍為不可以運行。
[0084] 309 :檢測存在可以運行的作業D,調度作業D運行。
[0085] 310 :根據作業D的運行結果,更新作業D的運行狀態為運行失敗,并生成第二更新 指令。
[0086] 311 :響應所述第二更新指令,將作業E的運行狀態更新為放棄運行。
[0087] 根據預先配置的各個作業之間的依賴關系,可知作業E的前提作業為作業的B和 作業D,由于作業D的運行狀態為運行失敗,因此將作業E的運行狀態更新為放棄運行。
[0088] 此時,各個作業的運行狀態為運行成功、運行失敗或放棄運行,因此即結束流程。
[0089] 通過本實施例,作業B和作業C無依賴關系,可以并發執行,因此減少了作業調時 間,可以提高資源利用率。且根據本實施例的運行狀態更新以及推導,只有前提作業運行成 功的作業的運行狀態才會更新為可以運行,否則繼續保持不可運行或者放棄運行的狀態, 從而保證了存在依賴關系的作業的有序執行,避免出現數據錯誤。
[0090] 本發明實施例在實際應用中,可以應用于任一個節點中,由該節點執行本發明實 施例的技術方案。其中,節點可以是指在服務器中部署的一個軟件程序。在運行狀態為可 以運行的作業包括多個時,調度運行狀態可以運行的作業運行,具體可以是以并行方式運 行所述作業調度模塊調度的運行狀態為可以運行的作業,也即將運行狀態為可以運行的作 業同時運行。
[0091] 而由于數據處理流程的作業可能包括多個,特別是大數據領域,數據處理流程很 復雜,作業數目也會很多,依賴關系也會復雜,可能存在大量需要并發執行的作業。而一個 節點可利用的資源是有限的,在大量作業并發運行時,可能導致資源不夠用。
[0092] 因此,本發明實施例可以具體應用于分布式系統中,該分布式系統可以包括多個 計算節點。計算節點也即是指在服務器中部署的一個用于運行作業的計算程序。
[0093] 因此,本發明實施例中,調度運行狀態為可以運行的作業運行可以是:
[0094] 將運行狀態為可以運行的作業提供給多個計算節點,由至少一個計算節點獲取并 運行至少一個運行狀態為可以運行的作業。
[0095] 多個計算節點可以分別部署在不同的服務器中,也可以部署在同一臺服務器中。
[0096] 在運行狀態為可以運行的作業包括多個時,每一個可以運行的作業可以分配到一 個計算節點中運行,每一個計算節點可以運行至少一個運行狀態為可以運行的作業從而通 過多個計算節點,分攤了作業運行量,實現了作業的分布式執行。使作業調度和作業執行可 以分離開來,且可以根據不同的需求設計分布式的系統,以實現大量作業的同時執行。
[0097] 圖4本發明實施例提供的一種作業調度裝置一個實施例的結構示意圖,該裝置可 以包括:
[0098] 作業調度模塊401,用于初始化數據處理流程的各個作業的運行狀態為不可運行, 生成第一更新指令;調度運行狀態為可以運行的作業運行,根據運行結果更新所述作業的 運行狀態為運行成功或運行失敗,并生成第二更新指令;
[0099] 所述規則確定模塊402,用于獲取預先配置的數據處理流程的各個作業之間的依 賴關系;響應所述第一更新指令,按照所述數據處理流程的各個作業之間的依賴關系,將不 存在前提作業的作業的運行狀態更新為可以運行;響應所述第二更新指令,按照所述數據 處理流程的各個作業之間的依賴關系,將存在前提作業,且所述前提作業的運行狀態均為 運行成功的作業的運行狀態,更新為可以運行。
[0100] 規則確定模塊主要負責根據作業之間的依賴關系,對作業的運行狀態進行推導, 以確定出可以運行的作業。
[0101] 作業調度模塊在存在運行狀態為可以運行的作業時,即可以對可以運行的作業進 行調度。
[0102] 本發明實施例從不存在前提作業的作業,也即初始作業開始調度運行,通過規則 推導的方式,根據作業之間依賴關系,可以更新各個作業的運行狀態,只有前提作業運行成 功的作業的運行狀態才會更新為可以運行,否則繼續保持不可運行或者放棄運行的狀態, 從而既保證了存在依賴關系的作業的有序執行,不會出現數據錯誤,且前提作業如果存在 多個依賴其的作業時,只要其運行狀態為運行成功,依賴其的多個作業均可以更新可以運 行,從而運行狀態為可以運行的作業即可以進行運行,同時保證了無依賴關系的作業可以 并發執行,提高資源的利用率。
[0103] 作為又一個實施例,所述規則確定模塊402響應所述第二更新指令,還用于,按照 所述數據處理流程的各個作業之間的依賴關系,將存在前提作業,且任一前提作業運行狀 態為運行失敗或放棄運行的作業的運行狀態,更新為放棄運行。
[0104] 作業調度模塊生成的第一更新指令以及第二更新指令,可以發送至規則確定模 塊,以觸發規則確定模塊對作業的運行狀態進行更新。
[0105] 作業調度模塊如果檢測到的作業為放棄運行,即不會運行該作業,從而可以減少 計算步驟。
[0106] 作業調度模塊還用于在各個作業的運行狀態均為運行成功、運行失敗或放棄運行 時,即可以停止作業調度。
[0107] 因此規則確定模塊響應所述第二更新指令,將存在前提作業,且所述前提作業的 運行狀態均為運行成功的作業的運行狀態,更新為可以運行具體是,響應第二更新指令,將 運行狀態為不可運行,且存在前提作業,以及所述前提作業的運行狀態均為運行成功的作 業的運行狀態,更新為可以運行。
[0108] 其中,將不存在前提作業的作業的運行狀態更新為可以運行,以及將存在前提作 業,且所述前提作業的運行狀態均為運行成功的作業的運行狀態的狀態推導過程,是按照 作業之間的依賴關系進行推導。
[0109] 為了清楚表示作業之間的依賴關系,且可以方便獲取作業之間的依賴關系,作業 之間的依賴關系可以采用DAG(Directed Acyclic Graph,有向無環圖)的方式進行表示,當 然也可以采用其他方式表示,比如采用關系樹來表示,關系樹中根節點依賴葉子節點運行, 任一個前提作業可以作為依賴其運行結果的作業的葉子節點,依賴前提作業運行結果的作 業可以作為該前提作業的根節點
[0110] 因此,作為又一個實施例,所述規則確定模塊402可以具體用于獲取預設配置的 表示數據處理流程的各個作業之間的依賴關系的DAG ;響應所述第一更新指令,按照所述 DAG表示的所述數據處理流程各個作業的依賴關系,將不存在前提作業的作業的運行狀態 更新為可以運行;響應所述第二更新指令,按照所述DAG表示的所述數據處理流程各個作 業的依賴關系,將存在前提作業,且所述前提作業的運行狀態均為運行成功的作業的運行 狀態,更新為可以運行。
[0111] 本發明實施例的數據處理流程的各個作業的運行狀態可以保存在數據存儲模塊 中。
[0112] 因此如圖5所示,作為又一個實施例,本發明實施例提供的數據處理作業調度裝 置還包括數據存儲模塊403,用于存儲各個作業的運行狀態。
[0113] 作業調度模塊以及規則確定模塊可以對數據存儲模塊中的作業的運行狀態進行 更新。
[0114] 作業調度模塊401具體是:
[0115] 初始化數據處理流程的各個作業的運行狀態為不可運行,存儲在數據存儲模塊 403中,并生成第一更新指令;調度所述數據存儲模塊403中運行狀態為可以運行的作業運 行,根據運行結果更新所述數據存儲模塊403中所述作業的運行狀態為運行成功或運行失 敗,并生成第二更新指令;
[0116] 所述規則確定模塊402具體是:
[0117] 響應所述第一更新指令,將所述數據存儲模塊403中不存在前提作業的作業的運 行狀態更新為可以運行;響應所述第二更新指令,將所述數據存儲模塊403中存在前提作 業,且所述前提作業的運行狀態均為運行成功的作業的運行狀態,更新為可以運行。
[0118] 數據存儲模塊可以具體將各個作業的運行狀態保存在作業狀態表中。
[0119] 作業調度模塊以及規則確定模塊通過讀取數據存儲模塊中的作業狀態表,獲得各 個作業的運行狀態,進而可以進行作業調度或更新。
[0120] 在一種可能的實現方式中,如圖6所示,作為又一個實施例,該裝置還可以包括一 作業執行模塊404,用于以并行方式運行所述作業調度模塊401調度的運行狀態為可以運 行的作業。
[0121] 本發明實施例提供的數據處理作業調度裝置在實際應用中,即可以應用于一個節 點,由該節點實現作業的調度運行。
[0122] 而由于數據處理流程的作業可能包括多個,特別是大數據領域,數據處理流程很 復雜,作業數目也會很多,依賴關系也會復雜,可能存在大量需要并發執行的作業。而一個 計算節點的資源是有限的,在大量作業并發運行時,可能導致資源不夠用。
[0123] 因此,作為另一種可能的實現方式,該作業調度模塊調度運行狀態為可以運行的 作業運行可以是:
[0124] 將運行狀態為可以運行的作業提供給多個計算節點,由至少一個計算節點運行至 少一個運行狀態為可以運行的作業。
[0125] 在運行狀態為可以運行的作業包括多個時,可以由多個計算節點分攤運行,從而 實現了分布式執行,有利于作業的并發執行。
[0126] 且可以根據不同的需求設計分布式的系統,可以方便計算節點的擴展,以實現大 量作業的同時執行。
[0127] 該多個計算節點可以分別部署在一個或多個服務器中,一個服務器中可以至少部 署一個計算節點。
[0128] 結合上述描述,本發明實施例還提供了一種數據處理作業調度系統,如圖7所示, 為本發明實施例提供的一種數據處理作業調度系統一個實施例的結構示意圖,該系統可以 包括至少一個作業調度節點701、至少一個規則推理節點702以及多個計算節點703 ;
[0129] 任一個作業調度節點701,用于初始化數據處理流程的各個作業的運行狀態為不 可運行,生成第一更新指令;將運行狀態為可以運行的作業提供給所述多個計算節點,由至 少一個計算節點運行至少一個運行狀態為可以運行的作業;根據運行結果更新所述作業的 運行狀態為運行成功或運行失敗,并生成第二更新指令;
[0130] 任一個規則推理節點702,用于響應所述第一更新指令,將不存在前提作業的作業 的運行狀態更新為可以運行;響應所述第二更新指令,將存在前提作業,且所述前提作業的 運行狀態均為運行成功的作業的運行狀態,更新為可以運行;
[0131] 所述計算節點703,用于運行所述作業調度節點提供的運行狀態為可以運行的作 業。
[0132] 該作業調度節點響應第二更新指令,還可以將存在前提作業,且任一前提作業運 行狀態為運行失敗或放棄運行的作業的運行狀態,更新為放棄運行。
[0133] 本實施例中,由作業調度節點進行作業運行狀態的初始化、更新以及作業調度,可 以調度多個計算節點運行,運行狀態為可以運行的作業。
[0134] 采用本實施例所述的系統架構,可以方便擴展計算節點,以滿足大量的并發執行 的作業。也可以方便的擴展作業調度節點和規則引擎節點,以提升系統處理能力,具有高度 容錯能力。
[0135] 此外,如圖8所示,該分布式系統還可以包括作業存儲節點704,各個作業的運行 狀態可以存儲在作業存儲節點704。作業調度節點以及規則推理節點通過與作業存儲節點 的交互,更新作業存儲節點中作業的運行狀態。
[0136] 其中,作業調度節點、規則推理節點、計算節點以及作業存儲節點等節點可以分別 是在服務器中部署的一個軟件程序。
[0137] -個服務器可以部署不同類型的節點,例如作業調度節點、規則推理節點、計算節 點以及作業存儲節點可以同時部署在一臺服務器中,使得該服務器可以提供多種服務;也 可以僅部署一種類型節點,例如作業調度節點、規則推理節點、計算節點以及數據存儲節點 分別部署在不同的服務器中,每臺服務器提供一種服務。可以根據服務器資源的充足程度, 確定服務器中部署的節點類型。
[0138] 在本發明實施例提供的另一種數據處理作業調度系統中,該數據處理作業調度系 統可以包括至少一個控制節點以及多個計算節點;
[0139] 由控制節點初始化數據處理流程的各個作業的運行狀態為不可運行,生成第一更 新指令;響應所述第一更新指令,將不存在前提作業的作業的運行狀態更新為可以運行; 將運行狀態為可以運行的作業提供給所述多個計算節點,由至少一個計算節點獲取并運行 至少一個運行狀態為可以運行的作業;獲取并根據運行結果更新所述作業的運行狀態為運 行成功或運行失敗,生成第二更新指令;響應所述第二更新指令,將存在前提作業,且所述 前提作業的運行狀態均為運行成功的作業的運行狀態,更新為可以運行。
[0140] 其中,控制節點可以是服務器中部署的實現控制功能的一個軟件程序。
[0141] 在實際應用中,本發明實施例的數據處理作業調度系統可以采用Jenkins作為計 算作業執行的底層實現,可以使用主/從模式方便的擴展不同類型的節點,以滿足不斷增 加的計算需求。檢測到運行狀態為可以運行的作業后,會調用Jenkins API將這些作業分 發到每個計算節點執行,并可以定時讀取作業的執行結果。
[0142] 以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可 以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單 元,即可以位于一個地方,或者也可以分布到多個網絡單元上。可以根據實際的需要選擇其 中的部分或者全部模塊來實現本實施例方案的目的。本領域普通技術人員在不付出創造性 的勞動的情況下,即可以理解并實施。
[0143] 通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到各實施方式可 借助軟件加必需的通用硬件平臺的方式來實現,當然也可以通過硬件。基于這樣的理解,上 述技術方案本質上或者說對現有技術做出貢獻的部分可以以軟件產品的形式體現出來,該 計算機軟件產品可以存儲在計算機可讀存儲介質中,如R0M/RAM、磁碟、光盤等,包括若干指 令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備等)執行各個實施 例或者實施例的某些部分所述的方法。
[0144] 最后應說明的是:以上實施例僅用以說明本發明的技術方案,而非對其限制;盡 管參照前述實施例對本發明進行了詳細的說明,本領域的普通技術人員應當理解:其依然 可以對前述各實施例所記載的技術方案進行修改,或者對其中部分技術特征進行等同替 換;而這些修改或者替換,并不使相應技術方案的本質脫離本發明各實施例技術方案的精 神和范圍。
【主權項】
1. 一種數據處理作業調度方法,其特征在于,包括: 獲取預先配置的數據處理流程的各個作業之間的依賴關系; 初始化數據處理流程的各個作業的運行狀態為不可運行,生成第一更新指令; 響應所述第一更新指令,按照所述數據處理流程的各個作業之間的依賴關系,將不存 在前提作業的作業的運行狀態更新為可以運行; 調度運行狀態為可以運行的作業運行,根據運行結果更新所述作業的運行狀態為運行 成功或運行失敗,并生成第二更新指令; 響應所述第二更新指令,按照所述數據處理流程的各個作業之間的依賴關系,將存在 前提作業,且所述前提作業的運行狀態均為運行成功的作業的運行狀態,更新為可以運行。2. 根據權利要求1所述的方法,其特征在于,調度運行狀態為可以運行的作業運行,并 根據運行結果更新所述作業的運行狀態為運行成功或運行失敗,生成第二更新指令之后, 所述方法還包括: 響應所述第二更新指令,按照所述數據處理流程的各個作業之間的依賴關系,將存在 前提作業,且任一前提作業運行狀態為運行失敗或放棄運行的作業的運行狀態,更新為放 棄運行。3. 根據權利要求1所述的方法,其特征在于,所述調度運行狀態為可以運行的作業運 行包括: 將運行狀態為可以運行的作業提供給多個計算節點,由至少一個計算節點運行至少一 個運行狀態為可以運行的作業。4. 根據權利要求1所述的方法,其特征在于,所述數據處理流程的各個作業之間的依 賴關系通過有向無環圖表示; 獲取預先配置的數據處理流程的各個作業之間的依賴關系包括: 獲取預先配置的表示數據處理流程的各個作業之間的依賴關系有向無環圖; 所述響應所述第一更新指令,按照所述數據處理流程的各個作業之間的依賴關系,將 不存在前提作業的作業的運行狀態更新為可以運行包括: 響應所述第一更新指令,按照所述有向無環圖表示的數據處理流程的各個作業之間的 依賴關系,將不存在前提作業的作業的運行狀態更新為可以運行; 所述響應所述第二更新指令,按照所述數據處理流程的各個作業之間的依賴關系,將 存在前提作業,且所述前提作業的運行狀態均為運行成功的作業的運行狀態,更新為可以 運行包括: 響應所述第二更新指令,按照所述有向無環圖表示的所述數據處理流程的各個作業之 間的依賴關系,將存在前提作業,且所述前提作業的運行狀態均為運行成功的作業的運行 狀態,更新為可以運行。5. -種數據處理作業調度裝置,其特征在于,包括: 作業調度模塊,用于初始化數據處理流程的各個作業的運行狀態為不可運行,生成第 一更新指令;調度運行狀態為可以運行的作業運行,根據運行結果更新所述作業的運行狀 態為運行成功或運行失敗,并生成第二更新指令; 規則確定模塊,用于獲取預先配置的數據處理流程的各個作業之間的依賴關系;響應 所述第一更新指令,按照所述數據處理流程的各個作業之間的依賴關系,將不存在前提作 業的作業的運行狀態更新為可以運行;響應所述第二更新指令,按照所述數據處理流程的 各個作業之間的依賴關系,將存在前提作業,且所述前提作業的運行狀態均為運行成功的 作業的運行狀態,更新為可以運行。6. 根據權利要求5所述的裝置,其特征在于,所述規則確定模塊還用于: 響應所述第二更新指令,按照所述數據處理流程的各個作業之間的依賴關系,將存在 前提作業,且任一前提作業運行狀態為運行失敗或放棄運行的作業的運行狀態,更新為放 棄運行。7. 根據權利要求5所述的裝置,其特征在于,所述作業調度模塊調度運行狀態為可以 運行的作業運行具體是: 將運行狀態為可以運行的作業提供給至少一個計算節點運行,由至少一個計算節點運 行至少一個運行狀態為可以運行的作業。8. 根據權利要求5所述的裝置,其特征在于,還包括作業執行模塊; 所述作業執行模塊,用于以并行方式運行所述作業調度模塊調度的運行狀態為可以運 行的作業。9. 根據權利要求5所述的方法,其特征在于,所述數據處理流程的各個作業之間的依 賴關系通過有向無環圖表示; 所述規則確定模塊具體用于獲取預設配置的表示數據處理流程的各個作業之間的依 賴關系的有向無環圖;響應所述第一更新指令,按照所述有向無環圖表示的所述數據處理 流程的各個作業之間的依賴關系,將不存在前提作業的作業的運行狀態更新為可以運行; 響應所述第二更新指令,按照所述有向無環圖表示的所述數據處理流程的各個作業之間的 依賴關系,將存在前提作業,且所述前提作業的運行狀態均為運行成功的作業的運行狀態, 更新為可以運行。10. -種數據處理作業調度系統,其特征在于,包括至少一個作業調度節點、至少一個 規則推理節點以及多個計算節點; 任一個作業調度節點,用于初始化數據處理流程的各個作業的運行狀態為不可運行, 生成第一更新指令;將運行狀態為可以運行的作業提供給所述多個計算節點,由至少一個 計算節點運行至少一個運行狀態為可以運行的作業;根據運行結果更新所述作業的運行狀 態為運行成功或運行失敗,并生成第二更新指令; 任一個規則推理節點,用于獲取預先配置的數據處理流程的各個作業之間的依賴關 系;響應所述第一更新指令,按照所述數據處理流程的各個作業之間的依賴關系,將不存在 前提作業的作業的運行狀態更新為可以運行;響應所述第二更新指令,按照所述數據處理 流程的各個作業之間的依賴關系,將存在前提作業,且所述前提作業的運行狀態均為運行 成功的作業的運行狀態,更新為可以運行; 所述計算節點,用于運行所述作業調度節點提供的運行狀態為可以運行的作業。
【文檔編號】G06F9/48GK105893122SQ201510526866
【公開日】2016年8月24日
【申請日】2015年8月25日
【發明人】許鷺清, 陳抒
【申請人】樂視網信息技術(北京)股份有限公司