專利名稱:容錯的批量處理的制作方法
技術(shù)領(lǐng)域:
此描述涉及以容錯方式處理批量的數(shù)據(jù)。
背景技術(shù):
復(fù)雜的計算通常可以表示為有向圖(稱為“數(shù)據(jù)流程圖(daaflow graph) ”),其中計算的各組成部分與圖的節(jié)點(或頂點)相關(guān)聯(lián)并且各組成部分之間的數(shù)據(jù)流對應(yīng)于圖的各節(jié)點之間的鏈路(link)(或,弧(arc)、邊緣(edge))。組成部分包括處理數(shù)據(jù)的數(shù)據(jù)處理組成部分和用作數(shù)據(jù)流的源(source)或接收器(sink)的組成部分。各數(shù)據(jù)處理組成部分形成可以并發(fā)地處理多級的數(shù)據(jù)的流水線系統(tǒng)。美國專利5,966,072,EXE⑶TING COMPUTATIONS EXPRESSED AS GRAPHS 中描述了實施這種基于圖的計算(graph-based computation)的系統(tǒng)。在某些情況下,將基于圖的計算配置為接收輸入數(shù)據(jù)的流并且處理連續(xù)的數(shù)據(jù)流以便無限地提供來自一個或更多個組成部分的結(jié)果,直到計算關(guān)閉為止。在某些情況下,將基于圖的計算配置為接收批量的輸入數(shù)據(jù)并且處理批量的數(shù)據(jù)以提供對于此批量的結(jié)果。然后在已經(jīng)處理了該批量之后關(guān)閉或返回到空閑的狀態(tài)。
發(fā)明內(nèi)容
在一方面,總體上,用于以容錯方式處理批量輸入數(shù)據(jù)的方法包括從一個或更多個數(shù)據(jù)源讀取包括多個記錄的批量輸入數(shù)據(jù);以及使所述批量經(jīng)過包括由鏈路連接的代表組成部分的兩個或更多個節(jié)點的數(shù)據(jù)流程圖,所述鏈路代表各組成部分之間的數(shù)據(jù)的流, 其中,至少一個但少于全部的組成部分包括檢查點處理,用于針對與一個或更多個記錄相關(guān)聯(lián)的數(shù)個工作單元中的每一個執(zhí)行的動作。所述檢查點處理包括在針對批量的處理開始時,打開非易失性存儲器中存儲的檢查點緩存;以及對于來自所述批量的每個工作單元, 如果由于對工作單元執(zhí)行所述動作所產(chǎn)生的結(jié)果在之前被保存在檢查點緩存中,則使用所保存的結(jié)果完成工作單元的處理而不再次執(zhí)行所述動作,或者如果由于對工作單元執(zhí)行所述動作所產(chǎn)生的結(jié)果未被保存在檢查點緩存中,則執(zhí)行所述動作以完成工作單元的處理并且將由于執(zhí)行所述動作所產(chǎn)生的結(jié)果保存在檢查點緩存中。一些方面可以包括下列特征中的一個或更多個。所述動作包括與遠程服務(wù)器通信。由于執(zhí)行所述動作所產(chǎn)生的結(jié)果包括由于用于工作單元的與遠程服務(wù)器的通信所產(chǎn)生的信息。所述方法進一步包括在完成所述批量的處理時刪除檢查點緩存。與遠程服務(wù)器的通信被收費。與遠程服務(wù)器的通信的結(jié)果存儲在易失性存儲器中,并且在發(fā)生觸發(fā)事件時按組保存至檢查點緩存。所述觸發(fā)事件是來自檢查點管理器的信號。 所述觸發(fā)事件是自從上次寫至檢查點緩存時起記錄的數(shù)目的處理。
所述觸發(fā)事件是自上次寫至檢查點緩存時起時間段的經(jīng)過。包括檢查點處理的組成部分并行地在多個處理設(shè)備上運行。數(shù)據(jù)記錄在多個并行處理設(shè)備之中的分配在批量的運行之間是一致的,并且每個處理設(shè)備保持獨立的檢查點緩存。數(shù)據(jù)記錄在多個并行處理設(shè)備之中的分配是動態(tài)的,并且處理設(shè)備共享對于所共享的非易失性存儲器中存儲的單個檢查點緩存的訪問,其中對于檢查點緩存的寫入由檢查點管理器控制。所述方法進一步包括在已經(jīng)發(fā)生錯誤狀況時,重新開始數(shù)據(jù)流程圖中的所有組成部分;從一個或更多個數(shù)據(jù)源讀取包括多個記錄的批量輸入數(shù)據(jù);以及使整個批量經(jīng)過數(shù)據(jù)流程圖。所述動作包括與遠程服務(wù)器通信。在另一方面,總體上,計算機可讀介質(zhì)存儲用于以容錯方式處理批量輸入數(shù)據(jù)的計算機程序。該計算機程序包括指令,所述指令使得計算機從一個或更多個數(shù)據(jù)源讀取包括多個記錄的批量輸入數(shù)據(jù);以及使所述批量經(jīng)過包括由鏈路連接的代表組成部分的兩個或更多個節(jié)點的數(shù)據(jù)流程圖,所述鏈路代表各組成部分之間的數(shù)據(jù)的流,其中,至少一個但少于全部的組成部分包括檢查點處理,用于針對與一個或更多個記錄相關(guān)聯(lián)的數(shù)個工作單元中的每一個執(zhí)行的動作。所述檢查點處理進一步包括在針對批量的處理開始時,打開非易失性存儲器中存儲的檢查點緩存;以及對于來自所述批量的每個工作單元,如果由于對工作單元執(zhí)行所述動作所產(chǎn)生的結(jié)果在之前被保存在檢查點緩存中,則使用所保存的結(jié)果完成工作單元的處理而不再次執(zhí)行所述動作,或者如果由于對工作單元執(zhí)行所述動作所產(chǎn)生的結(jié)果未被保存在檢查點緩存中,則執(zhí)行所述動作以完成工作單元的處理并且將由于執(zhí)行所述動作所產(chǎn)生的結(jié)果保存在檢查點緩存中。在另一方面,總體上,用于以容錯方式處理批量輸入數(shù)據(jù)的系統(tǒng)包括用于從一個或更多個數(shù)據(jù)源讀取包括多個記錄的批量輸入數(shù)據(jù)的部件;以及用于使所述批量經(jīng)過包括兩個或更多個節(jié)點的數(shù)據(jù)流程圖的部件,所述節(jié)點代表由鏈路連接的組成部分,所述鏈路代表各組成部分之間的數(shù)據(jù)的流,其中,至少一個但少于全部的組成部分包括檢查點處理, 用于針對與一個或更多個記錄相關(guān)聯(lián)的數(shù)個工作單元中的每一個執(zhí)行的動作。所述檢查點處理包括在針對批量的處理開始時,打開非易失性存儲器中存儲的檢查點緩存;以及對于來自所述批量的每個工作單元,如果由于對工作單元執(zhí)行所述動作所產(chǎn)生的結(jié)果在之前被保存在檢查點緩存中,則使用所保存的結(jié)果完成工作單元的處理而不再次執(zhí)行所述動作,或者如果由于對工作單元執(zhí)行所述動作所產(chǎn)生的結(jié)果未被保存在檢查點緩存中,則執(zhí)行所述動作以完成工作單元的處理并且將由于執(zhí)行所述動作所產(chǎn)生的結(jié)果保存在檢查點緩存中。一些方面可以包括下列優(yōu)點中的一個或更多個可以消除對于數(shù)據(jù)流程圖中不同組成部分之間的一些檢查點有關(guān)通信的需要??梢赃x擇性地避免在錯誤恢復(fù)期間在多級批量處理中重復(fù)復(fù)雜和高成本的步驟,而沒有實施整個流水線的系統(tǒng)的檢查點的復(fù)雜性和花費。例如,通過避免對于收費服務(wù)的重復(fù)調(diào)用,此方法可以用于省錢。本發(fā)明的其它特征和優(yōu)點將根據(jù)下面的描述并且根據(jù)權(quán)利要求書而變得明顯。
圖1是具有輸入/輸出檢查點的批量數(shù)據(jù)處理系統(tǒng)的方框示圖。圖2是檢查點處理的流程圖。圖3是具有擁有并行性的輸入/輸出檢查點的批量數(shù)據(jù)處理系統(tǒng)的方框示圖。圖4是具有擁有并行性的輸入/輸出檢查點的批量數(shù)據(jù)處理系統(tǒng)和檢查點管理器的方框示圖。
具體實施例方式基于圖的數(shù)據(jù)處理系統(tǒng)可以配置為以容錯(fault tolerant)方式處理批量的輸入數(shù)據(jù),其包含將數(shù)據(jù)流程圖中的一個組成部分的中間結(jié)果保存至緩存(buffer),其中它們可以從該緩存中檢索到并且在錯誤狀況強制批量輸入數(shù)據(jù)的處理的重新啟動的情況下被重新使用。圖1是示例性的數(shù)據(jù)處理系統(tǒng)100的方框示圖。數(shù)據(jù)經(jīng)過數(shù)據(jù)流程圖的數(shù)據(jù)處理組成部分的序列,所述數(shù)據(jù)流程圖處理從一個或更多個數(shù)據(jù)源(data source)至一個或更多個數(shù)據(jù)接收器(data sink)的數(shù)據(jù)流。數(shù)據(jù)流程圖中的各種數(shù)據(jù)處理組成部分中的任何一個均可以通過在單獨的處理設(shè)備上運行的處理而加以實施,或者數(shù)個數(shù)據(jù)處理組成部分可以通過在單個處理設(shè)備上運行的一個或更多個處理而加以實施??梢园磁刻幚頂?shù)據(jù), 其標識要由系統(tǒng)100處理的一組輸入數(shù)據(jù)記錄。系統(tǒng)100對于批量數(shù)據(jù)的處理可以通過用戶輸入或者某種其它事件(如,定時器的到期)而啟動。當開始批量數(shù)據(jù)的處理時,從一個或更多個輸入數(shù)據(jù)源讀取輸入數(shù)據(jù)記錄。例如,從諸如數(shù)據(jù)存儲組成部分110表示的計算機可讀存儲器件上存儲的一個或更多個文件讀取輸入數(shù)據(jù)。也可以從諸如數(shù)據(jù)存儲組成部分112表示的服務(wù)器上運行的數(shù)據(jù)庫讀取輸入數(shù)據(jù)記錄。結(jié)合組成部分120按順序從數(shù)個數(shù)據(jù)源讀取數(shù)據(jù)(例如,記錄),并且將輸入數(shù)據(jù)安排為一序列的離散工作單元(work unit)。工作單元例如可以代表基于輸入記錄以預(yù)定格式存儲的記錄,或者例如可以代表要處理的事務(wù)(transaction)。在某些實施方案中,每個工作單元可以由批量內(nèi)唯一的編號(如,處理的工作單元的計數(shù))來標識。然后按順序?qū)⒐ぷ鲉卧獋鹘o數(shù)據(jù)流程圖中的下一組成部分。實施系統(tǒng)100的示例性數(shù)據(jù)流程圖還包括數(shù)據(jù)處理組成部分130和140。數(shù)據(jù)處理組成部分130包括檢查點處理,其在批量處理過程期間將關(guān)于其處理的狀態(tài)信息有規(guī)律地保存至非易失性存儲器。當出現(xiàn)錯誤狀況并且必須重新啟動批量時,檢查點的組成部分 130訪問所存儲的狀態(tài)信息以降低在批量的重復(fù)運行期間必須重復(fù)的處理的量。由此,檢查點以使用非易失性存儲器資源和向數(shù)據(jù)處理組成部分130添加復(fù)雜性為代價提供了容錯。 數(shù)據(jù)處理組成部分140是沒有檢查點的組成部分。其它數(shù)據(jù)流程圖可以包括更多或更少的數(shù)據(jù)處理組成部分。可以將所需要那么多的數(shù)據(jù)處理組成部分配置為包括檢查點處理。 典型地,將在延遲或某些其它度量方面具有高成本的組成部分配置為包括檢查點處理,從而在錯誤狀況的情況下,無需針對批量中的所有工作單元重復(fù)系統(tǒng)100中的高成本處理步馬聚ο數(shù)據(jù)處理組成部分130包括訪問遠程服務(wù)器150的步驟。對于處理的每個工作單元,第一處理組成部分130將把請求發(fā)送至遠程服務(wù)器150并且接收來自該遠程服務(wù)器的結(jié)果(例如,來自數(shù)據(jù)庫的數(shù)據(jù))。這種操作出于各種原因而可能是高成本的,所述各種原因包括在與遠程服務(wù)器通信時經(jīng)歷的網(wǎng)絡(luò)延遲或者遠程控制器提供的服務(wù)的收費。在接收到結(jié)果后,組成部分130為下一數(shù)據(jù)處理組成部分140產(chǎn)生輸出。由于此組成部分130 已配置為包括檢查點處理,其通過將工作單元的輸出傳遞至下一數(shù)據(jù)處理組成部分140并且開始下一工作單元的處理,以保存來自遠程服務(wù)器150的結(jié)果作為完成處理之前的處理狀態(tài)信息的一部分。處理狀態(tài)信息可以暫存在運行檢查點處理的處理設(shè)備上的易失性存儲器中。以有規(guī)律的時間將一個或更多個工作單元的處理狀態(tài)信息寫入至非易失性存儲器中所存儲的檢查點緩存,從而其稍后在錯誤狀況的情況下是可用的。隨著工作單元通過數(shù)據(jù)流程圖的各數(shù)據(jù)處理組成部分,與每個工作單元相關(guān)聯(lián)的最終結(jié)果被傳輸至數(shù)據(jù)接收器160??梢詥为毜貍鬏敼ぷ鲉卧蛘咴谀承嵤┓桨钢?, 工作單元可以用于遞增地更新最終結(jié)果,或者可以在最終結(jié)果傳輸至數(shù)據(jù)接收器160之前 (例如,按隊列)予以累積。數(shù)據(jù)接收器160可以是存儲工作單元或者基于工作單元的一些累積輸出的數(shù)據(jù)存儲組成部分,例如,或者數(shù)據(jù)接收器160可以是工作單元被公布到的隊列或者用于接收最終結(jié)果的某些其它類型的接收器。批量處理在批量中的所有工作單元的結(jié)果已被傳輸至數(shù)據(jù)接收器160時結(jié)束。此時,可終止數(shù)據(jù)流程圖中的組成部分。與檢查點的組成部分相關(guān)聯(lián)的檢查點處理可以刪除其檢查點緩存作為其終止例程的一部分。圖2是用于對檢查點的組成部分進行檢查點的示例性處理200的流程圖。例如, 一旦來自于通過數(shù)據(jù)流程圖實施批量處理的軟件的外部調(diào)用時,處理200啟動201。啟動可以包括為檢查點的組成部分在其上運行的處理設(shè)備上的處理200分配易失性存儲器, 并且保留任何其它所需要的資源。處理200接著檢查205是否已經(jīng)將與此處理相關(guān)聯(lián)的檢查點緩存保存在非易失性存儲器中。如果不存在檢查點緩存,則在非易失性存儲器中創(chuàng)建 207新的檢查點緩存。如果之前存儲了檢查點緩存,則其被打開208。打開208檢查點緩存可以包括發(fā)現(xiàn)非易失性存儲器中檢查點緩存的位置,或者可能將檢查點緩存的所有或一部分復(fù)制到處理設(shè)備上的易失性存儲器。在用于應(yīng)對每個工作單元的循環(huán)開始時,從數(shù)據(jù)流程圖中的之前組成部分或者從源接收210與工作單元相關(guān)聯(lián)的輸入數(shù)據(jù)??蛇x地,對工作單元進行預(yù)處理220。預(yù)處理 220例如可包括重新格式化數(shù)據(jù)記錄,或者確定可用于針對與工作單元相關(guān)聯(lián)的結(jié)果搜索檢查點緩存的值。檢查點處理200的檢查點緩存被檢查225以(例如,根據(jù)被中斷的批量的之前處理)確定此工作單元的結(jié)果是否存儲在檢查點緩存中。如果相關(guān)聯(lián)的結(jié)果未存儲在檢查點緩存中,則對工作單元進行包括高成本動作的處理230。高成本動作的示例可包括通過網(wǎng)絡(luò)訪問遠程服務(wù)器上的資源并且遭遇顯著的延遲或收取費用。然后將此處理的結(jié)果存儲240在檢查點緩存中。例如可以使用遞增計數(shù)器將此結(jié)果與正在處理的工作單元相關(guān)聯(lián),所述遞增處理器可以通過相同的計數(shù)器值標識工作單元和其相關(guān)聯(lián)的結(jié)果。該結(jié)果可以直接寫入至非易失性存儲器,或者可以暫時緩存在易失性存儲器中,直到觸發(fā)事件使得其被復(fù)制至非易失性存儲器為止。示例性的觸發(fā)事件包括處理固定數(shù)量的工作單元、經(jīng)過的時間段或者來自外部處理的信號。如果相關(guān)聯(lián)的結(jié)果存儲在檢查點緩存中,則從檢查點緩存中檢索250該結(jié)果??蛇x地,進行后處理沈0以完成工作單元的處理。后處理260例如可以包括重新格式化數(shù)據(jù)或者將數(shù)據(jù)傳遞至數(shù)據(jù)流程圖中的下一組成部分。在工作單元的處理完成后,檢查點處理200接著檢查270是否另一工作單元有待處理。如果另一工作單元是可用的, 則檢查點處理200循環(huán)回至讀取與下一工作單元相關(guān)聯(lián)的輸入數(shù)據(jù)。當沒有更多的工作單元有待處理時,工作點處理200等待280指示批量處理已經(jīng)完成并且指令其終止的外部信號。當接收到終止信號時,檢查點處理200在完成其終止序列290之前從非易失性存儲器中刪除285其檢查點緩存。完成終止序列290可以包括釋放處理設(shè)備或其它保留的資源上的易失性存儲器。圖3是示例性的數(shù)據(jù)處理系統(tǒng)300的方框示圖,其中實施系統(tǒng)300的數(shù)據(jù)流程圖包括具有分布式檢查點處理的并行組成部分。數(shù)據(jù)流程圖中的一個或更多個組成部分可以并行地運行在數(shù)個處理設(shè)備(例如,數(shù)個計算機或并行處理器的處理器核或數(shù)個處理器) 上。在此示例中,明確地描繪了檢查點并行組成部分的數(shù)個實例331、332和333。并行組成部分的實例運行在每個處理設(shè)備上,并且每個實例處理批量的工作單元的子集。在分布式檢查點辦法的此示例中,針對并行組成部分的三個實例中的每一個運行不同的檢查點處理。當開始批量數(shù)據(jù)的處理時,從一個或更多個輸入數(shù)據(jù)源讀取輸入數(shù)據(jù)記錄。例如, 可以從諸如數(shù)據(jù)存儲組成部分310表示的計算機可讀存儲設(shè)備上存儲的一個或更多個文件讀取輸入數(shù)據(jù)。也可以從在諸如數(shù)據(jù)存儲組成部分312表示的服務(wù)器上運行的數(shù)據(jù)庫讀取輸入數(shù)據(jù)記錄。結(jié)合組成部分320按順序從數(shù)個數(shù)據(jù)源讀取數(shù)據(jù),并且將輸入數(shù)據(jù)安排到一序列的離散工作單元。工作單元按順序傳遞至數(shù)據(jù)流程圖中的下一組成部分。由于數(shù)據(jù)流程圖中的下一數(shù)據(jù)處理組成部分是并行組成部分,因此工作單元由數(shù)據(jù)單元分割組成部分330分割并分配至數(shù)個組成部分實例。在此示例中,工作單元在各實例之中的分配在不同的批量處理運行之間一致(consistent),從而各實例無需訪問被分配給其它實例的工作單元的狀態(tài)信息。在出現(xiàn)錯誤狀況并且需要再次運行批量時,工作單元分割組成部分330基于利用一致的結(jié)果可重復(fù)的一致算法,將工作單元分配至特定的實例。例如,工作單元分配分割組成部分330繼而可以只是將工作單元每次一個地分配給每個組成部分實例,在工作單元計數(shù)超過并行實例的數(shù)目時循環(huán)至第一實例。在另一示例中, 工作單元分割組成部分330可以應(yīng)用這樣的分割算法其未保證在運行之間產(chǎn)生一致分配并且將分配信息保存至非易失性存儲器,從而在需要批量的重復(fù)運行的情況下可以重復(fù)相同的分配。檢查點并行組成部分的每個實例331、332和333使用結(jié)合圖1的檢查點組成部分130所描述的方法,獨立地處理向其分配的工作單元。每個實例331、332和333在非易失性存儲器中創(chuàng)建并保持其自身的檢查點緩存。當處理了工作單元時,實例檢查其自身的檢查點緩存以確定之前是否已經(jīng)在批量的先前運行期間處理了工作單元。在示例性的系統(tǒng) 300中,檢查點的并行組成部分包括與遠程服務(wù)器350通信以獲取每個工作單元的信息的動作。在其它示例中,檢查點并行組成部分可以包括具有與其相關(guān)聯(lián)的高成本的其它動作, 其為容錯判斷檢查點緩存的維護(maintenance)。當工作單元的處理結(jié)束時,將結(jié)果傳遞至聚集組成部分338,該聚集組成部分338 收集來自數(shù)個實例的結(jié)果并且將它們傳遞至數(shù)據(jù)流程圖中的下一數(shù)據(jù)處理組成部分。數(shù)據(jù)處理組成部分340是沒有檢查點的組成部分。在其它示例中,數(shù)據(jù)流程圖中的任何數(shù)目的組成部分均可以包括檢查點。在某些情況下,將檢查點處理限制到進行高成本動作的組成部分是有益的。其它數(shù)據(jù)流程圖可以包括更多或更少的數(shù)據(jù)處理組成部分, 其對于任何給定的數(shù)據(jù)處理組成部分具有或沒有并行性(parallelism)。隨著工作單元通過數(shù)據(jù)流程圖的各組成部分,與每個工作單元相關(guān)聯(lián)的最終結(jié)果被傳輸至數(shù)據(jù)接收器360。批量處理在批量中的所有工作單元的結(jié)果已被傳輸至數(shù)據(jù)接收器360時結(jié)束。此時,可終止數(shù)據(jù)流程圖中的各組成部分相關(guān)聯(lián)的處理。給定實例的檢查點處理可以刪除其檢查點緩存作為其終止例程的一部分。圖4是示例性的數(shù)據(jù)處理系統(tǒng)400的方框示圖,其中實施系統(tǒng)400的數(shù)據(jù)流程圖包括具有集中式檢查點處理的并行組成部分。在此示例中,明確地描繪了檢查點并行組成部分的數(shù)個實例431、432和433。并行化的組成部分的實例運行在每個處理設(shè)備上,并且每個實例處理批量的工作單元的子集。在集中式檢查點辦法的此示例中,檢查點管理器436 應(yīng)對與并行組成部分的三個實例中的每一個通信的至少一些檢查點處理。可以在運行并行組成部分的實例的各處理設(shè)備中的一個處理設(shè)備上或者在單獨的處理設(shè)備上運行檢查點管理器436。當開始批量數(shù)據(jù)的處理時,從數(shù)據(jù)存儲組成部分410和412讀取輸入數(shù)據(jù)記錄。結(jié)合組成部分420按順序從數(shù)個數(shù)據(jù)源讀取數(shù)據(jù),并且將輸入數(shù)據(jù)安排到所存儲的一序列的離散工作單元。然后將工作單元按順序傳遞至數(shù)據(jù)流程圖中的下一組成部分,其在此示例中是檢查點并行組成部分。在圖4的示例中,檢查點管理器436控制對于由實例431、432和433 (其每一個均運行在不同的處理設(shè)備上)共享的單個檢查點緩存的訪問。對于批量中的所有工作單元共享單個檢查點緩存允許將工作單元動態(tài)地分配至各實例,而不需要從批量的之前運行匹配分配。共享的檢查點緩存存儲在所有的實例可以經(jīng)由總線或通信網(wǎng)絡(luò)直接地、或者經(jīng)由與檢查點管理器436的通信間接地訪問的所共享的非易失性存儲器435上。實例431、432、433 可以在它們處理工作單元時讀取所共享的非易失性存儲器435以檢查檢查點緩存。如果在檢查點緩存中發(fā)現(xiàn)當前工作單元的結(jié)果,則所存儲的結(jié)果用以避免重復(fù)高成本動作。如果在檢查點緩存中未發(fā)現(xiàn)當前工作單元的結(jié)果,則執(zhí)行工作單元的動作并且將結(jié)果存儲在檢查點緩存中。為了寫入至檢查點緩存,實例431、432、433將寫請求消息發(fā)送至檢查點管理器436。檢查點管理器436然后向共享的非易失性存儲器435寫入以更新檢查點緩存。在可替換的實施例中,檢查點管理器436將記號(token)發(fā)送至給出向共享的非易失性存儲器435寫入的許可的請求實例,以便更新檢查點緩存。由于所有的實例431、432、433使用共享的檢查點緩存,因此在批量數(shù)據(jù)的每一運行期間,工作單元分割組成部分430可以以不同的方式在各實例之間動態(tài)地分配工作單元。例如,工作單元分割組成部分430可以基于運行時在每個處理設(shè)備上的可用容量(其可能在運行之間變化)動態(tài)地分配每個工作單元。這種方法還允許工作單元分割組成部分 430使用不同數(shù)量的并行實例。例如,在錯誤狀況之后,運行并行組成部分的實例(例如,實例43 的處理設(shè)備之一可以被禁止或者不可用。在批量重新啟動的這種情況下,工作單元分割組成部分430可以將所有的工作單元分配至剩余的實例431、432,其可以無縫地訪問由禁止的實例433之前處理的工作單元的檢查點緩存入口。檢查點管理器436可以由在單獨的處理設(shè)備上運行的處理來實施,或者其可以由在運行并行組成部分的實例的處理設(shè)備之一上運行的處理來實施。在檢查點緩存更新事件之間,實例431、432、433可以將檢查點緩存更新緩存在本地的易失性存儲器中。檢查點管理器436可以將信號發(fā)送至實例,其觸發(fā)實例以易失性存儲器中緩存的任何信息開始檢查點緩存更新。當工作單元的處理完成時,將結(jié)果傳遞至聚集組成部分438,該聚集組成部分438 收集來自數(shù)個實例的結(jié)果并且將它們傳遞至數(shù)據(jù)流程圖中的下一數(shù)據(jù)處理組成部分。數(shù)據(jù)處理組成部分440是沒有檢查點的組成部分。在其它示例中,數(shù)據(jù)流程圖中的任何數(shù)量的組成部分可以包括檢查點。在某些情況下,將檢查點處理限制到要進行高成本動作的組成部分是有益的。其它數(shù)據(jù)流程圖可以包括更多或更少的處理組成部分,其對于任何給定的數(shù)據(jù)處理組成部分具有或沒有并行性(parallelism)。隨著工作單元通過數(shù)據(jù)流程圖的各組成部分,與每個工作單元相關(guān)聯(lián)的最終結(jié)果被傳輸至數(shù)據(jù)接收器460。批量處理在批量中的所有工作單元的結(jié)果已被傳輸至數(shù)據(jù)接收器460時結(jié)束。此時,可終止數(shù)據(jù)流程圖中的組成部分。檢查點管理器436可以刪除檢查點緩存作為其終止例程的一部分。上面描述的容錯批量處理辦法可以通過使用用于在計算機上運行的軟件來實施。 例如,軟件將過程形成在一個或更多個計算機程序中,所述程序運行在一個或更多個編程的或可編程的計算機系統(tǒng)(其可以是諸如分布式、客戶端/服務(wù)器或網(wǎng)格(grid)之類的各種架構(gòu))上,每個計算機系統(tǒng)包括至少一個處理器、至少一個數(shù)據(jù)存儲系統(tǒng)(包括易失性和非易失性存儲器和/或存儲元件)、至少一個輸入設(shè)備或端口和至少一個輸出設(shè)備或端口。 軟件例如可以形成更大程序的一個或更多個模塊,其提供計算圖(computation graph)的配置和設(shè)計有關(guān)的其它服務(wù)。圖的節(jié)點和要素可以實施為計算機可讀介質(zhì)中所存儲的數(shù)據(jù)結(jié)構(gòu)或者遵循數(shù)據(jù)倉庫(data repository)中存儲的數(shù)據(jù)模型的其它有組織的數(shù)據(jù)??梢詫④浖峁┰诳捎赏ㄓ没?qū)S每删幊逃嬎銠C讀取的CD-ROM之類的存儲介質(zhì)上,或者經(jīng)由網(wǎng)絡(luò)的通信介質(zhì)輸送(以傳播的信號編碼)至其被運行的計算機??梢栽趯S玫挠嬎銠C上或者使用專用硬件(如,協(xié)處理器)執(zhí)行所有的功能??梢砸杂刹煌挠嬎銠C執(zhí)行軟件所指定的計算的不同部分的分布式方式實施軟件。最好將每個這種計算機程序存儲于或者下載至可由通用或?qū)S每删幊逃嬎銠C讀取的存儲介質(zhì)或器件(例如,固態(tài)存儲器或介質(zhì),或者磁或光介質(zhì)),用于在計算機系統(tǒng)讀取存儲介質(zhì)或器件時配置和操作計算機以執(zhí)行在此描述的過程。還可以考慮將本發(fā)明的系統(tǒng)實施為以計算機程序配置的計算機可讀存儲介質(zhì),其中如此配置的存儲介質(zhì)使得計算機系統(tǒng)以特定和預(yù)定義的方式工作以執(zhí)行在此描述的功能。已經(jīng)描述了本發(fā)明的多個實施例。然而,要理解的是,在不脫離本發(fā)明精神和范圍的情況下可以進行各種變型。例如,上面描述的步驟中的一些可以是有序獨立的,由此可以以與描述的順序不同的順序加以執(zhí)行。要理解,前面的描述旨在說明而不是要限制本發(fā)明的范圍,本發(fā)明的范圍由所附權(quán)利要求書的范圍限定。例如,可以在實質(zhì)上不影響總體處理的情況下以不同的順序執(zhí)行上面描述的多個功能步驟。其它實施例在所附權(quán)利要求書的范圍內(nèi)。
權(quán)利要求
1.一種用于以容錯方式處理批量輸入數(shù)據(jù)的方法,該方法包括從一個或更多個數(shù)據(jù)源讀取包括多個記錄的批量輸入數(shù)據(jù);以及使所述批量經(jīng)過包括由鏈路連接的代表組成部分的兩個或更多個節(jié)點的數(shù)據(jù)流程圖, 所述鏈路代表各組成部分之間的數(shù)據(jù)的流,其中,至少一個但少于全部的組成部分包括檢查點處理,用于針對與一個或更多個記錄相關(guān)聯(lián)的數(shù)個工作單元中的每一個執(zhí)行的動作;其中,所述檢查點處理包括在針對批量的處理開始時,打開非易失性存儲器中存儲的檢查點緩存;以及對于來自所述批量的每個工作單元,如果由于對工作單元執(zhí)行所述動作所產(chǎn)生的結(jié)果在之前被保存在檢查點緩存中,則使用所保存的結(jié)果完成工作單元的處理而不再次執(zhí)行所述動作,或者如果由于對工作單元執(zhí)行所述動作所產(chǎn)生的結(jié)果未被保存在檢查點緩存中, 則執(zhí)行所述動作以完成工作單元的處理并且將由于執(zhí)行所述動作所產(chǎn)生的結(jié)果保存在檢查點緩存中。
2.如權(quán)利要求1所述的方法,其中,所述動作包括與遠程服務(wù)器通信。
3.如權(quán)利要求2所述的方法,其中,由于執(zhí)行所述動作所產(chǎn)生的結(jié)果包括由于用于工作單元的與遠程服務(wù)器的通信所產(chǎn)生的信息。
4.如權(quán)利要求1所述的方法,進一步包括在完成所述批量的處理時刪除檢查點緩存。
5.如權(quán)利要求2所述的方法,其中,與遠程服務(wù)器的通信被收費。
6.如權(quán)利要求2所述的方法,其中,與遠程服務(wù)器的通信的結(jié)果存儲在易失性存儲器中,并且在發(fā)生觸發(fā)事件時按組保存至檢查點緩存。
7.如權(quán)利要求6所述的方法,其中,所述觸發(fā)事件是來自檢查點管理器的信號。
8.如權(quán)利要求6所述的方法,其中,所述觸發(fā)事件是自從上次寫至檢查點緩存時起記錄數(shù)目的處理。
9.如權(quán)利要求6所述的方法,其中,所述觸發(fā)事件是自上次寫至檢查點緩存時起時間段的經(jīng)過。
10.如權(quán)利要求1所述的方法,其中,包括檢查點處理的組成部分并行地在多個處理設(shè)備上運行。
11.如權(quán)利要求10所述的方法,其中,數(shù)據(jù)記錄在多個并行處理設(shè)備之中的分配在批量的運行之間是一致的,并且每個處理設(shè)備保持獨立的檢查點緩存。
12.如權(quán)利要求10所述的方法,其中,數(shù)據(jù)記錄在多個并行處理設(shè)備之中的分配是動態(tài)的,并且處理設(shè)備共享對于所共享的非易失性存儲器中存儲的單個檢查點緩存的訪問, 其中對于檢查點緩存的寫入由檢查點管理器控制。
13.如權(quán)利要求1所述的方法,進一步包括在已經(jīng)發(fā)生錯誤狀況時,重新開始數(shù)據(jù)流程圖中的所有組成部分;從一個或更多個數(shù)據(jù)源讀取包括多個記錄的批量輸入數(shù)據(jù);以及使整個批量經(jīng)過數(shù)據(jù)流程圖。
14.如權(quán)利要求13所述的方法,其中,所述動作包括與遠程服務(wù)器通信。
15.一種存儲了用于以容錯方式處理批量輸入數(shù)據(jù)的計算機程序的計算機可讀介質(zhì), 該計算機程序包括指令,所述指令使得計算機從一個或更多個數(shù)據(jù)源讀取包括多個記錄的批量輸入數(shù)據(jù);以及使所述批量經(jīng)過包括由鏈路連接的代表組成部分的兩個或更多個節(jié)點的數(shù)據(jù)流程圖, 所述鏈路代表各組成部分之間的數(shù)據(jù)的流,其中,至少一個但少于全部的組成部分包括檢查點處理,用于針對與一個或更多個記錄相關(guān)聯(lián)的數(shù)個工作單元中的每一個執(zhí)行的動作; 其中,所述檢查點處理進一步包括在針對批量的處理開始時,打開非易失性存儲器中存儲的檢查點緩存;以及對于來自所述批量的每個工作單元,如果由于對工作單元執(zhí)行所述動作所產(chǎn)生的結(jié)果在之前被保存在檢查點緩存中,則使用所保存的結(jié)果完成工作單元的處理而不再次執(zhí)行所述動作,或者如果由于對工作單元執(zhí)行所述動作所產(chǎn)生的結(jié)果未被保存在檢查點緩存中, 則執(zhí)行所述動作以完成工作單元的處理并且將由于執(zhí)行所述動作所產(chǎn)生的結(jié)果保存在檢查點緩存中。
16. 一種用于以容錯方式處理批量輸入數(shù)據(jù)的系統(tǒng),該系統(tǒng)包括 用于從一個或更多個數(shù)據(jù)源讀取包括多個記錄的批量輸入數(shù)據(jù)的部件;以及用于使所述批量經(jīng)過包括由鏈路連接的代表組成部分的兩個或更多個節(jié)點的數(shù)據(jù)流程圖,所述鏈路代表各組成部分之間的數(shù)據(jù)的流,其中,至少一個但少于全部的組成部分包括檢查點處理,用于針對與一個或更多個記錄相關(guān)聯(lián)的數(shù)個工作單元中的每一個執(zhí)行的動作;其中,所述檢查點處理包括在針對批量的處理開始時,打開非易失性存儲器中存儲的檢查點緩存;以及對于來自所述批量的每個工作單元,如果由于對工作單元執(zhí)行所述動作所產(chǎn)生的結(jié)果在之前被保存在檢查點緩存中,則使用所保存的結(jié)果完成工作單元的處理而不再次執(zhí)行所述動作,或者如果由于對工作單元執(zhí)行所述動作所產(chǎn)生的結(jié)果未被保存在檢查點緩存中, 則執(zhí)行所述動作以完成工作單元的處理并且將由于執(zhí)行所述動作所產(chǎn)生的結(jié)果保存在檢查點緩存中。
全文摘要
處理批量的輸入數(shù)據(jù)包括讀取包括數(shù)個記錄的批量,并且使所述批量經(jīng)過數(shù)據(jù)流程圖。至少一個但少于全部的圖組成部分包括檢查點處理,用于針對與一個或更多個記錄相關(guān)聯(lián)的數(shù)個工作單元中的每一個執(zhí)行的動作;檢查點處理包括在處理開始時,打開檢查點緩存。如果由于對工作單元執(zhí)行所述動作所產(chǎn)生的結(jié)果在之前被保存在檢查點緩存中,則使用所保存的結(jié)果完成工作單元的處理而不再次執(zhí)行所述動作。如果由于對工作單元執(zhí)行所述動作所產(chǎn)生的結(jié)果未被保存在檢查點緩存中,則執(zhí)行所述動作以完成工作單元的處理并且將由于執(zhí)行所述動作所產(chǎn)生的結(jié)果保存在檢查點緩存中。
文檔編號G06F11/00GK102473122SQ201080031812
公開日2012年5月23日 申請日期2010年7月13日 優(yōu)先權(quán)日2009年7月14日
發(fā)明者B.P.多羅斯, M.D.阿特布里, T.瓦克林 申請人:起元技術(shù)有限責任公司