以容錯(cuò)方式處理批量輸入數(shù)據(jù)的方法和系統(tǒng)的制作方法
【專利說明】以容錯(cuò)方式處理批量輸入數(shù)據(jù)的方法和系統(tǒng)
[0001 ](本申請是申請日為2010年7月13日、申請?zhí)枮?01080031812.2、發(fā)明名稱為“容錯(cuò)的批量處理”的申請的分案申請)
技術(shù)領(lǐng)域
[0002]此描述涉及以容錯(cuò)方式處理批量的數(shù)據(jù)。
【背景技術(shù)】
[0003]復(fù)雜的計(jì)算通??梢员硎緸橛邢驁D(稱為“數(shù)據(jù)流程圖(dataflowgraph)”),其中計(jì)算的各組成部分與圖的節(jié)點(diǎn)(或頂點(diǎn))相關(guān)聯(lián)并且各組成部分之間的數(shù)據(jù)流對應(yīng)于圖的各節(jié)點(diǎn)之間的鏈路(link)(或,弧(arc)、邊緣(edge))。組成部分包括處理數(shù)據(jù)的數(shù)據(jù)處理組成部分和用作數(shù)據(jù)流的源(source)或接收器(sink)的組成部分。各數(shù)據(jù)處理組成部分形成可以并發(fā)地處理多級的數(shù)據(jù)的流水線系統(tǒng)。美國專利5,966,07 2,EXECUT INGCOMPUTAT1NS EXPRESSED AS GRAPHS中描述了實(shí)施這種基于圖的計(jì)算(graph-basedcomputat1n)的系統(tǒng)。在某些情況下,將基于圖的計(jì)算配置為接收輸入數(shù)據(jù)的流并且處理連續(xù)的數(shù)據(jù)流以便無限地提供來自一個(gè)或更多個(gè)組成部分的結(jié)果,直到計(jì)算關(guān)閉為止。在某些情況下,將基于圖的計(jì)算配置為接收批量的輸入數(shù)據(jù)并且處理批量的數(shù)據(jù)以提供對于此批量的結(jié)果。然后在已經(jīng)處理了該批量之后關(guān)閉或返回到空閑的狀態(tài)。
【發(fā)明內(nèi)容】
[0004]在一方面,總體上,用于以容錯(cuò)方式處理批量輸入數(shù)據(jù)的方法包括:從一個(gè)或更多個(gè)數(shù)據(jù)源讀取包括多個(gè)記錄的批量輸入數(shù)據(jù);以及使所述批量經(jīng)過包括由鏈路連接的代表組成部分的兩個(gè)或更多個(gè)節(jié)點(diǎn)的數(shù)據(jù)流程圖,所述鏈路代表各組成部分之間的數(shù)據(jù)的流,其中,至少一個(gè)但少于全部的組成部分包括檢查點(diǎn)處理,用于針對與一個(gè)或更多個(gè)記錄相關(guān)聯(lián)的數(shù)個(gè)工作單元中的每一個(gè)執(zhí)行的動作。所述檢查點(diǎn)處理包括:在針對批量的處理開始時(shí),打開非易失性存儲器中存儲的檢查點(diǎn)緩存;以及對于來自所述批量的每個(gè)工作單元,如果由于對工作單元執(zhí)行所述動作所產(chǎn)生的結(jié)果在之前被保存在檢查點(diǎn)緩存中,則使用所保存的結(jié)果完成工作單元的處理而不再次執(zhí)行所述動作,或者如果由于對工作單元執(zhí)行所述動作所產(chǎn)生的結(jié)果未被保存在檢查點(diǎn)緩存中,則執(zhí)行所述動作以完成工作單元的處理并且將由于執(zhí)行所述動作所產(chǎn)生的結(jié)果保存在檢查點(diǎn)緩存中。
[0005]—些方面可以包括下列特征中的一個(gè)或更多個(gè)。
[0006]所述動作包括與遠(yuǎn)程服務(wù)器通信。
[0007]由于執(zhí)行所述動作所產(chǎn)生的結(jié)果包括由于用于工作單元的與遠(yuǎn)程服務(wù)器的通信所產(chǎn)生的信息。
[0008]所述方法進(jìn)一步包括:在完成所述批量的處理時(shí)刪除檢查點(diǎn)緩存。
[0009]與遠(yuǎn)程服務(wù)器的通信被收費(fèi)。
[0010]與遠(yuǎn)程服務(wù)器的通信的結(jié)果存儲在易失性存儲器中,并且在發(fā)生觸發(fā)事件時(shí)按組保存至檢查點(diǎn)緩存。
[0011]所述觸發(fā)事件是來自檢查點(diǎn)管理器的信號。
[0012]所述觸發(fā)事件是自從上次寫至檢查點(diǎn)緩存時(shí)起記錄的數(shù)目的處理。
[0013]所述觸發(fā)事件是自上次寫至檢查點(diǎn)緩存時(shí)起時(shí)間段的經(jīng)過。
[0014]包括檢查點(diǎn)處理的組成部分并行地在多個(gè)處理設(shè)備上運(yùn)行。
[0015]數(shù)據(jù)記錄在多個(gè)并行處理設(shè)備之中的分配在批量的運(yùn)行之間是一致的,并且每個(gè)處理設(shè)備保持獨(dú)立的檢查點(diǎn)緩存。
[0016]數(shù)據(jù)記錄在多個(gè)并行處理設(shè)備之中的分配是動態(tài)的,并且處理設(shè)備共享對于所共享的非易失性存儲器中存儲的單個(gè)檢查點(diǎn)緩存的訪問,其中對于檢查點(diǎn)緩存的寫入由檢查點(diǎn)管理器控制。
[0017]所述方法進(jìn)一步包括:在已經(jīng)發(fā)生錯(cuò)誤狀況時(shí),重新開始數(shù)據(jù)流程圖中的所有組成部分;從一個(gè)或更多個(gè)數(shù)據(jù)源讀取包括多個(gè)記錄的批量輸入數(shù)據(jù);以及使整個(gè)批量經(jīng)過數(shù)據(jù)流程圖。
[0018]所述動作包括與遠(yuǎn)程服務(wù)器通信。
[0019]在另一方面,總體上,計(jì)算機(jī)可讀介質(zhì)存儲用于以容錯(cuò)方式處理批量輸入數(shù)據(jù)的計(jì)算機(jī)程序。該計(jì)算機(jī)程序包括指令,所述指令使得計(jì)算機(jī):從一個(gè)或更多個(gè)數(shù)據(jù)源讀取包括多個(gè)記錄的批量輸入數(shù)據(jù);以及使所述批量經(jīng)過包括由鏈路連接的代表組成部分的兩個(gè)或更多個(gè)節(jié)點(diǎn)的數(shù)據(jù)流程圖,所述鏈路代表各組成部分之間的數(shù)據(jù)的流,其中,至少一個(gè)但少于全部的組成部分包括檢查點(diǎn)處理,用于針對與一個(gè)或更多個(gè)記錄相關(guān)聯(lián)的數(shù)個(gè)工作單元中的每一個(gè)執(zhí)行的動作。所述檢查點(diǎn)處理進(jìn)一步包括:在針對批量的處理開始時(shí),打開非易失性存儲器中存儲的檢查點(diǎn)緩存;以及對于來自所述批量的每個(gè)工作單元,如果由于對工作單元執(zhí)行所述動作所產(chǎn)生的結(jié)果在之前被保存在檢查點(diǎn)緩存中,則使用所保存的結(jié)果完成工作單元的處理而不再次執(zhí)行所述動作,或者如果由于對工作單元執(zhí)行所述動作所產(chǎn)生的結(jié)果未被保存在檢查點(diǎn)緩存中,則執(zhí)行所述動作以完成工作單元的處理并且將由于執(zhí)行所述動作所產(chǎn)生的結(jié)果保存在檢查點(diǎn)緩存中。
[0020]在另一方面,總體上,用于以容錯(cuò)方式處理批量輸入數(shù)據(jù)的系統(tǒng)包括:用于從一個(gè)或更多個(gè)數(shù)據(jù)源讀取包括多個(gè)記錄的批量輸入數(shù)據(jù)的部件;以及用于使所述批量經(jīng)過包括兩個(gè)或更多個(gè)節(jié)點(diǎn)的數(shù)據(jù)流程圖的部件,所述節(jié)點(diǎn)代表由鏈路連接的組成部分,所述鏈路代表各組成部分之間的數(shù)據(jù)的流,其中,至少一個(gè)但少于全部的組成部分包括檢查點(diǎn)處理,用于針對與一個(gè)或更多個(gè)記錄相關(guān)聯(lián)的數(shù)個(gè)工作單元中的每一個(gè)執(zhí)行的動作。所述檢查點(diǎn)處理包括:在針對批量的處理開始時(shí),打開非易失性存儲器中存儲的檢查點(diǎn)緩存;以及對于來自所述批量的每個(gè)工作單元,如果由于對工作單元執(zhí)行所述動作所產(chǎn)生的結(jié)果在之前被保存在檢查點(diǎn)緩存中,則使用所保存的結(jié)果完成工作單元的處理而不再次執(zhí)行所述動作,或者如果由于對工作單元執(zhí)行所述動作所產(chǎn)生的結(jié)果未被保存在檢查點(diǎn)緩存中,則執(zhí)行所述動作以完成工作單元的處理并且將由于執(zhí)行所述動作所產(chǎn)生的結(jié)果保存在檢查點(diǎn)緩存中。
[0021]—些方面可以包括下列優(yōu)點(diǎn)中的一個(gè)或更多個(gè):可以消除對于數(shù)據(jù)流程圖中不同組成部分之間的一些檢查點(diǎn)有關(guān)通信的需要。可以選擇性地避免在錯(cuò)誤恢復(fù)期間在多級批量處理中重復(fù)復(fù)雜和高成本的步驟,而沒有實(shí)施整個(gè)流水線的系統(tǒng)的檢查點(diǎn)的復(fù)雜性和花費(fèi)。例如,通過避免對于收費(fèi)服務(wù)的重復(fù)調(diào)用,此方法可以用于省錢。
[0022]本發(fā)明的其它特征和優(yōu)點(diǎn)將根據(jù)下面的描述并且根據(jù)權(quán)利要求書而變得明顯。
【附圖說明】
[0023]圖1是具有輸入/輸出檢查點(diǎn)的批量數(shù)據(jù)處理系統(tǒng)的方框示圖。
[0024]圖2是檢查點(diǎn)處理的流程圖。
[0025]圖3是具有擁有并行性的輸入/輸出檢查點(diǎn)的批量數(shù)據(jù)處理系統(tǒng)的方框示圖。
[0026]圖4是具有擁有并行性的輸入/輸出檢查點(diǎn)的批量數(shù)據(jù)處理系統(tǒng)和檢查點(diǎn)管理器的方框示圖。
【具體實(shí)施方式】
[0027]基于圖的數(shù)據(jù)處理系統(tǒng)可以配置為以容錯(cuò)(faulttolerant)方式處理批量的輸入數(shù)據(jù),其包含:將數(shù)據(jù)流程圖中的一個(gè)組成部分的中間結(jié)果保存至緩存(buffer),其中它們可以從該緩存中檢索到并且在錯(cuò)誤狀況強(qiáng)制批量輸入數(shù)據(jù)的處理的重新啟動的情況下被重新使用。
[0028]圖1是示例性的數(shù)據(jù)處理系統(tǒng)100的方框示圖。數(shù)據(jù)經(jīng)過數(shù)據(jù)流程圖的數(shù)據(jù)處理組成部分的序列,所述數(shù)據(jù)流程圖處理從一個(gè)或更多個(gè)數(shù)據(jù)源(data source)至一個(gè)或更多個(gè)