以容错方式处理批量输入数据的方法和系统的制作方法
【专利说明】以容错方式处理批量输入数据的方法和系统
[0001 ](本申请是申请日为2010年7月13日、申请号为201080031812.2、发明名称为“容错的批量处理”的申请的分案申请)
技术领域
[0002]此描述涉及以容错方式处理批量的数据。
【背景技术】
[0003]复杂的计算通常可以表示为有向图(称为“数据流程图(dataflowgraph)”),其中计算的各组成部分与图的节点(或顶点)相关联并且各组成部分之间的数据流对应于图的各节点之间的链路(link)(或,弧(arc)、边缘(edge))。组成部分包括处理数据的数据处理组成部分和用作数据流的源(source)或接收器(sink)的组成部分。各数据处理组成部分形成可以并发地处理多级的数据的流水线系统。美国专利5,966,07 2,EXECUT INGCOMPUTAT1NS EXPRESSED AS GRAPHS中描述了实施这种基于图的计算(graph-basedcomputat1n)的系统。在某些情况下,将基于图的计算配置为接收输入数据的流并且处理连续的数据流以便无限地提供来自一个或更多个组成部分的结果,直到计算关闭为止。在某些情况下,将基于图的计算配置为接收批量的输入数据并且处理批量的数据以提供对于此批量的结果。然后在已经处理了该批量之后关闭或返回到空闲的状态。
【发明内容】
[0004]在一方面,总体上,用于以容错方式处理批量输入数据的方法包括:从一个或更多个数据源读取包括多个记录的批量输入数据;以及使所述批量经过包括由链路连接的代表组成部分的两个或更多个节点的数据流程图,所述链路代表各组成部分之间的数据的流,其中,至少一个但少于全部的组成部分包括检查点处理,用于针对与一个或更多个记录相关联的数个工作单元中的每一个执行的动作。所述检查点处理包括:在针对批量的处理开始时,打开非易失性存储器中存储的检查点缓存;以及对于来自所述批量的每个工作单元,如果由于对工作单元执行所述动作所产生的结果在之前被保存在检查点缓存中,则使用所保存的结果完成工作单元的处理而不再次执行所述动作,或者如果由于对工作单元执行所述动作所产生的结果未被保存在检查点缓存中,则执行所述动作以完成工作单元的处理并且将由于执行所述动作所产生的结果保存在检查点缓存中。
[0005]—些方面可以包括下列特征中的一个或更多个。
[0006]所述动作包括与远程服务器通信。
[0007]由于执行所述动作所产生的结果包括由于用于工作单元的与远程服务器的通信所产生的信息。
[0008]所述方法进一步包括:在完成所述批量的处理时删除检查点缓存。
[0009]与远程服务器的通信被收费。
[0010]与远程服务器的通信的结果存储在易失性存储器中,并且在发生触发事件时按组保存至检查点缓存。
[0011]所述触发事件是来自检查点管理器的信号。
[0012]所述触发事件是自从上次写至检查点缓存时起记录的数目的处理。
[0013]所述触发事件是自上次写至检查点缓存时起时间段的经过。
[0014]包括检查点处理的组成部分并行地在多个处理设备上运行。
[0015]数据记录在多个并行处理设备之中的分配在批量的运行之间是一致的,并且每个处理设备保持独立的检查点缓存。
[0016]数据记录在多个并行处理设备之中的分配是动态的,并且处理设备共享对于所共享的非易失性存储器中存储的单个检查点缓存的访问,其中对于检查点缓存的写入由检查点管理器控制。
[0017]所述方法进一步包括:在已经发生错误状况时,重新开始数据流程图中的所有组成部分;从一个或更多个数据源读取包括多个记录的批量输入数据;以及使整个批量经过数据流程图。
[0018]所述动作包括与远程服务器通信。
[0019]在另一方面,总体上,计算机可读介质存储用于以容错方式处理批量输入数据的计算机程序。该计算机程序包括指令,所述指令使得计算机:从一个或更多个数据源读取包括多个记录的批量输入数据;以及使所述批量经过包括由链路连接的代表组成部分的两个或更多个节点的数据流程图,所述链路代表各组成部分之间的数据的流,其中,至少一个但少于全部的组成部分包括检查点处理,用于针对与一个或更多个记录相关联的数个工作单元中的每一个执行的动作。所述检查点处理进一步包括:在针对批量的处理开始时,打开非易失性存储器中存储的检查点缓存;以及对于来自所述批量的每个工作单元,如果由于对工作单元执行所述动作所产生的结果在之前被保存在检查点缓存中,则使用所保存的结果完成工作单元的处理而不再次执行所述动作,或者如果由于对工作单元执行所述动作所产生的结果未被保存在检查点缓存中,则执行所述动作以完成工作单元的处理并且将由于执行所述动作所产生的结果保存在检查点缓存中。
[0020]在另一方面,总体上,用于以容错方式处理批量输入数据的系统包括:用于从一个或更多个数据源读取包括多个记录的批量输入数据的部件;以及用于使所述批量经过包括两个或更多个节点的数据流程图的部件,所述节点代表由链路连接的组成部分,所述链路代表各组成部分之间的数据的流,其中,至少一个但少于全部的组成部分包括检查点处理,用于针对与一个或更多个记录相关联的数个工作单元中的每一个执行的动作。所述检查点处理包括:在针对批量的处理开始时,打开非易失性存储器中存储的检查点缓存;以及对于来自所述批量的每个工作单元,如果由于对工作单元执行所述动作所产生的结果在之前被保存在检查点缓存中,则使用所保存的结果完成工作单元的处理而不再次执行所述动作,或者如果由于对工作单元执行所述动作所产生的结果未被保存在检查点缓存中,则执行所述动作以完成工作单元的处理并且将由于执行所述动作所产生的结果保存在检查点缓存中。
[0021]—些方面可以包括下列优点中的一个或更多个:可以消除对于数据流程图中不同组成部分之间的一些检查点有关通信的需要。可以选择性地避免在错误恢复期间在多级批量处理中重复复杂和高成本的步骤,而没有实施整个流水线的系统的检查点的复杂性和花费。例如,通过避免对于收费服务的重复调用,此方法可以用于省钱。
[0022]本发明的其它特征和优点将根据下面的描述并且根据权利要求书而变得明显。
【附图说明】
[0023]图1是具有输入/输出检查点的批量数据处理系统的方框示图。
[0024]图2是检查点处理的流程图。
[0025]图3是具有拥有并行性的输入/输出检查点的批量数据处理系统的方框示图。
[0026]图4是具有拥有并行性的输入/输出检查点的批量数据处理系统和检查点管理器的方框示图。
【具体实施方式】
[0027]基于图的数据处理系统可以配置为以容错(faulttolerant)方式处理批量的输入数据,其包含:将数据流程图中的一个组成部分的中间结果保存至缓存(buffer),其中它们可以从该缓存中检索到并且在错误状况强制批量输入数据的处理的重新启动的情况下被重新使用。
[0028]图1是示例性的数据处理系统100的方框示图。数据经过数据流程图的数据处理组成部分的序列,所述数据流程图处理从一个或更多个数据源(data source)至一个或更多个