批處理集群系統以及方法
【技術領域】
[0001]本發明涉及批處理應用,更具體來說,涉及一種批處理集群系統以及方法。
【背景技術】
[0002]目前業內批處理系統在大部分實際應用場景下,都在一臺機器上完成批處理的整體運行,因此運行失敗,只能手動恢復(重新啟動任務),同時還需要檢測運行失敗的批處理元數據,甚至需要手動修改狀態數據,從而導致系統不易維護和使用,業務無法連續。現有的批處理系統的具體缺點如下:
I)批處理系統沒有靈活的異常處理機制,無法靈活配置異常忽略機制,以及異常重試機制,從而保證批處理任務的連續性和健壯性。
[0003]2)批處理系統自身提供的主從方式,主節點有單點故障,因此故障無法自動轉移恢復,同時子節點如果運行失敗,也無法保證任務故障轉移。
[0004]3)集群中對子節點任務分發是固定的,無法根據子節點的運行負載狀況和任務的具體情況動態配置,因此無法真正高效的利用服務器的性能,來提高批處理效率。
【發明內容】
[0005]為了解決上述問題,本申請提供了一種批處理集群系統,所述系統包括:多個任務主節點,用于通過領域特定語言定義批處理任務的具體配置、分解和運行流程;多個執行子節點,用于根據所述具體配置、分解和運行流程來執行所述批處理任務中的分解步驟;以及分布式協調器,用于管理所述多個任務主節點,其中在任一時刻,在所述多個任務主節點中只有一個任務主節點被所述分布式協調器選擇處于工作狀態,而所述多個任務主節點中的其它節點則處于備用狀態。
[0006]在上述批處理集群系統中,所述分布式協調器配置成存儲批處理運行過程中的所有元數據。
[0007]在上述批處理集群系統中,處于工作狀態的任務主節點配置成在運行過程中向所述分布式協調器寫入與任務的運行以及狀態相關的元數據信息,而所述多個執行子節點配置成在運行過程中向所述分布式協調器寫入與所述任務中分解步驟的運行以及狀態相關的元數據信息。
[0008]在上述批處理集群系統中,所述任務主節點包括:健康檢查協調器,用于偵測處于工作狀態的任務主節點的健康狀況;故障恢復控制器,用于在所述處于工作狀態的任務主節點無法正常工作時,根據存儲的運行時元數據進行批處理運行上下文的恢復;任務分解處理器,用于根據預先配置的任務和數據分解策略對任務或數據進行拆分,并將拆分后的數據通過虛擬文件系統接口存放到文件中;以及任務執行協調器,用于負責分發任務主節點分解的任務。
[0009]在上述批處理集群系統中,所述任務執行協調器進一步配置成依據各執行子節點的運行負載和健康狀態,對分解的任務進行分發。
[0010]在上述批處理集群系統中,所述執行子節點包括心跳器,用于定時向所述任務執行協調器發送健康消息。
[0011]根據本申請的另一個方面,提供了一種由根據之前所述的批處理集群系統執行的方法,所述方法包括:從外部系統接收向所述批處理集群系統提交的任務;由所述批處理集群系統中處于工作狀態的一個任務主節點進行任務和數據拆分,并在所述拆分完成之后,進行步驟分解的子任務的分發;由所述批處理集群系統中的執行子節點執行由所述任務主節點分發過來的任務,并在執行過程中更新所述批處理集群系統中的分布式協調器中批處理運行的元數據信息;以及由所述任務主節點監測步驟分解的所有子任務是否執行成功;其中,在任一時刻,在所述多個任務主節點中只有一個任務主節點被所述分布式協調器選擇處于工作狀態,而所述多個任務主節點中的其它節點則處于備用狀態。
[0012]在上述方法中,在批處理執行過程中,所述批處理集群系統中的分布式協調器不斷監控處于工作狀態的一個任務主節點的狀態,并且在所述處于工作狀態的任務主節點無法工作時,所述分布式協調器配置成挑選其它可用的任務主節點來繼續服務,并由該可用的任務主節點調用故障恢復控制器來進行故障恢復。
[0013]在上述方法中,所述故障恢復控制器通過如下步驟來進行故障恢復:從所述分布式協調器獲得最新的批處理元數據信息;以及如果某個任務處于正在執行的狀態,則重新啟動該任務。
[0014]在上述方法中,所述批處理集群系統中的執行子節點定時向所述任務主節點中的任務執行協調器報告健康狀態,并且在所述執行子節點無法工作時,所述任務執行協調器將未處理完成的子任務連同運行信息發給其它可用的執行子節點。
【附圖說明】
[0015]在參照附圖閱讀了本發明的【具體實施方式】以后,本領域技術人員將會更清楚地了解本發明的各個方面。本領域技術人員應當理解的是:這些附圖僅僅用于配合【具體實施方式】說明本發明的技術方案,而并非意在對本發明的保護范圍構成限制。
[0016]圖1是根據本申請的實施例、批處理集群系統的結構示意圖;
圖2是根據本申請的實施例、批處理運行時元數據的數據結構圖;以及圖3是根據本申請的實施例、批處理集群系統的具體執行流程圖。
【具體實施方式】
[0017]下面介紹的是本發明的多個可能實施例中的一些,旨在提供對本發明的基本了解,并不旨在確認本發明的關鍵或決定性的要素或限定所要保護的范圍。容易理解,根據本發明的技術方案,在不變更本發明的實質精神下,本領域的一般技術人員可以提出可相互替換的其它實現方式。因此,以下【具體實施方式】以及附圖僅是對本發明的技術方案的示例性說明,而不應當視為本發明的全部或者視為對本發明技術方案的限定或限制。
[0018]眾所周知,批處理應用一般運行時間較長,但往往又需要保證任務在一定的時間窗口內完成,因此批處理在運行過程出現異常后,需在故障點恢復繼續運行,保證整個業務運行的連續性。
[0019]本申請的技術方案構建了一個新型批處理集群系統。它可以配置異常忽略機制、重試機制以及重新運行機制,保證批處理運行的高效性和業務的連續性。本申請的集群系統將集群中所有的節點分為兩類:任務主節點,執行子節點。任務主節點通過領域特定語言定義批處理任務的主流程(批處理運行的步驟),通過分布式協調器監控和管理任務主節點,同時存放批處理系統運行時元數據信息,為任務主節點的故障恢復提供數據。執行子節點執行任務主節點分解的任務(即任務主節點對步驟的分解),任務主節點使用自定義的執行協調器來保證執行子節點任務分發的負載均衡,并且保證執行子節點運行時故障轉移,從而最終保證整個集群任務執行的連續性和可靠性。
[0020]在本申請的批處理集群系統中,分布式協調器是高效和可靠的集群協同工作設備,它可以有效地解決集群中的單點故障問題,同時可以管理分布式環境中的數據。根據本申請的一些實施例,還使用自定義的分布式協調器存放集群主機中的批處理運行時關鍵元數據信息,為批處理的故障恢復提供保證。另外,領域特定語言具有很強的業務問題域描述功能,使用它來定義批處理的任務流程,可以提高批處理任務的可讀性和維護性。
[0021]圖1是根據本申請的實施例、批處理集群系統的結構示意圖。在示出的批處理集群系統中包括分布式協調器、任務主節點以及執行子節點。
[0022]在一個實施例中,集群中所有的任務主節點都通過分布式協調器進行管理。如果集群中間的某一個主節點無法工作,分布式協調器會感知并重新進行選舉,從集群剩余可用節點中重新選取一個主節點來繼續失敗節點的工作。在某一時刻,只有一個主節點處于工作狀態,其他的主節點處于備用狀態(standby )。
[0023]在一個實施例中,批處理運行過程中的所有元數據存放在分布式協調器中,可以被所有集群節點共享。批處理運行時元數據的數據結構定義如圖2所示。
[0024]批處理運行時的元數據信息主要包括兩部分,一個是任務的信息,另一個是任務中包含的步驟信息。元數據信息主要保存了批處理的運行中間狀態。故障恢復需要使用它們。
[0025]在一個實施例中,任務主節點通過領域特定語言定義批處理任務的具體配置和運行流程(即定義流程的步驟)。如果批處理流程某步驟需要集群模式運行,則按照既定的任務和數據分解策略進行拆分,然后調用任務分解處理器來分發拆分的子任務。
[0026]在一個實施例中,在定義批處理的具體步驟時,該任務主節點可以配置具體的異常忽略機制和重試機制。例如,當批處理運行過程中遇到該類異常,可以跳過異常繼續執行,或者重試執行,從而盡量保證批處理任務的連續性。
[0027]在一個實施例中,任務主節點在運行過程中會向分布式協調器寫入批處理運行時元數據信息,記錄job的運行及狀態信息。
[0028]在一個實施例中,執行子節點作為批處理任務中分解的步驟的具體執行者,在運行過程中會向分布式協調器寫入批處理運行時元數據信息,以記錄分解的步驟運行及狀態信息。優選地,執行子節點上面部署有心跳器,定時向任務執行協調器發送健康消息。
[0029]繼續參考圖1,任務主節點可進一步包括健康檢查協調器、故障恢復控制器、任務分解處理器以及任務執行協調器。
[0030]在一個實施例中,健康檢查協調器用于偵測任務主節點健康狀況,確保批處理集群向外提供透明可用的批處理服務,批處理服務是通過虛擬IP地址向外提供服務。在某一時刻,虛擬IP綁定在一臺可用的任務主節點上面。
[0031]在一個實施例中,當集群中的某臺任務主節點無法正常工作,另外可用的任務主節點會代替無法工作的機器,在新的任務主節點工作之前,需要調用故障恢復控制器來進行故障恢復。這時,故障恢復控制器根據存儲的運行時元數據進行批處理運行上下文的恢復。
[0032]在一個實施例中,任務分解處理器用于根據預先配置的任務和數據分解策略對任務或數據進行拆分。拆分后的數據通過虛擬文