本发明涉及大数据流式计算领域,尤其涉及一种任务的数据保存及恢复方法、装置、服务器及存储介质。
背景技术:
大数据领域对数据的处理模式根据时效性分为两类:批处理、流处理。其中流处理模式以假设数据的潜在价值是数据的新鲜度,因此流式处理方式应尽可能快地处理数据并得到结果。在这种方式下,数据以流的方式到达。批处理方式中,数据首先被存储,随后被分析,因此不适合对处理时延要求较高的场合。
根据处理模式不同,相应地存在两种大数据处理系统:批处理系统、流处理系统。随着商业智能和计算广告等领域的发展,更强调实时性的流式处理得到更广泛的关注。流式处理系统中,数据经常从多种数据源流入系统,并且以一种近实时的方式进行处理。由于近实时处理可以尽早的提供有价值的信息,目前很多商业公司更加青睐于实时处理系统而不是传统的批处理系统。
流处理系统的框架也称流计算框架,流计算作业的输入是连续不断的数据流(也可称之为事件流)。流计算框架一般都有容错机制,一旦作业失败,需要重启作业,从之前处理到的流的位置继续处理。这需要检查点(checkpoint)机制来保证。检查点机制定期对作业的执行状态(也即任务执行数据)进行保存,以便作业失败重启后,恢复到最近保存的状态继续执行。
在相关技术中,主流的流计算框架,检查点机制为:将任务各检查点的任务执行数据都全量保存在内存中,给内存带来很大压力,应用场景受限,一般只能用于作业状态很小的场景;且由于是全量保存,保存效率低,且内存中保存的各检查点的任务执行数据之间很可能存在较多的重复数据,不利于资源利用率的提升。
技术实现要素:
本发明实施例提供的一种任务的数据保存及恢复方法、装置、服务器及存储介质,解决相关技术中,将任务各检查点的任务执行数据都全量保存在内存中,应用场景受限,保存效率低,且内存中保存的数据重复度高,导致资源利用率低的问题。
为解决上述技术问题,本发明实施例提供了一种任务的数据保存方法,包括:
获取任务当前检查点的任务执行数据;
根据所述当前检查点的任务执行数据和所述任务上一检查点的任务执行数据,确定所述任务在所述两个检查点之间的变化数据;
将所述变化数据存入具有快照功能的存储系统,以及控制所述存储系统执行快照操作,并在所述存储系统中维护所述任务的任务执行数据的存储位置。
为解决上述技术问题,本发明实施例还提供了一种任务的恢复方法,包括:
在任务重新启动后,根据所述任务的数据在所述存储系统中的存储位置,从存储系统中获取所述任务的检查点对应的数据,所述任务的各检查点对应的数据通过如上所述的数据保存方法存储在所述存储系统中;
根据获取的检查点对应的数据恢复出所述任务之算子的计算状态。
为解决上述技术问题,本发明实施例还提供了一种任务的数据保存装置,包括:
增量计算模块,用于获取任务当前检查点的任务执行数据,根据所述当前检查点的任务执行数据和所述任务上一检查点的任务执行数据,确定所述任务在所述两个检查点之间的变化数据,将所述变化数据存入具有快照功能的存储系统,以及控制所述存储系统执行快照操作,并在所述存储系统中维护所述任务的任务执行数据的存储位置。
为解决上述技术问题,本发明实施例还提供了一种任务的恢复装置,包括:
任务恢复模块,用于在任务重新启动后,根据所述任务的数据在所述存储系统中的存储位置,从存储系统中获取所述任务的检查点对应的数据,根据获取的检查点对应的数据恢复出所述任务之算子的计算状态;所述任务的各检查点对应的数据通过如上所述的数据保存方法存储在所述存储系统中。
为解决上述技术问题,本发明实施例还提供了一种服务器,包括处理器、存储器和通信总线;
所述通信总线用于将所述处理器和存储器连接;
所述处理器用于执行所述存储器中存储的第一计算机程序,以实现如上所述的任务的数据保存方法的步骤;
和/或,
所述处理器用于执行所述存储器中存储的第二计算机程序,以实现如上所述的任务的恢复方法的步骤。
为解决上述技术问题,本发明实施例还提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有第一计算机程序,所述第一计算机程序可被处理器执行,以实现如上所述的任务的数据保存方法的步骤;
和/或,
所述计算机可读存储介质存储有第二计算机程序,所述第二计算机程序可被处理器执行,以实现如上所述的任务的恢复方法的步骤。
有益效果
根据本发明实施例提供的任务的数据保存及恢复方法、装置、服务器及存储介质,在任务执行过程中,获取任务当前检查点的任务执行数据,并结合该任务上一检查点的任务执行数据,确定任务在两个检查点之间的变化数据,将变化数据进行存储,也即进行增量存储,相对相关技术中的全量存储方式,可在很大程度上减少所需存储的数据量大小以及降低存储的数据之间的重复度,可在很大程度上提升资源利用率和存储效率;
其次,本发明实施例通过将控制将变化数据存入具有快照功能的存储系统,而不是内存中,并可通过存储系统自身的快照功能执行快照操作,由于检查点的数据存入存储系统而不是内存中,消除了内存空间大小的局限性,可适用于各种大数据流计算领域;另外通过利用存储系统自身的快照功能实现任务各检查点数据的保存,改动小,易实现且实现成本低。
本发明其他特征和相应的有益效果在说明书的后面部分进行阐述说明,且应当理解,至少部分有益效果从本发明说明书中的记载变的显而易见。
附图说明
图1为本发明实施例一的任务的数据保存方法流程示意图;
图2为本发明实施例一的任务的恢复方法的流程示意图;
图3为本发明实施例二的任务的数据保存装置结构示意图;
图4为本发明实施例二的任务的恢复装置结构示意图;
图5为本发明实施例二的流计算框架示意图;
图6为本发明实施例二的任务的数据保存方法流程示意图;
图7为本发明实施例二的任务的恢复方法的流程示意图;
图8为本发明实施例三的服务器结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,下面通过具体实施方式结合附图对本发明实施例作进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
实施例一:
针对相关技术中,将任务各检查点的任务执行数据都全量保存在内存中,应用场景受限,保存效率低,且内存中保存的数据重复度高,导致资源利用率低的问题。本实施例将任务两个相邻检查点之间的变化数据进行存储,也即采用增量存储,相对相关技术中的全量存储方式,可减少所需存储的数据量以及降低存储的数据之间的重复度,提升资源利用率和存储效率;其次,本实施例将变化数据存入具有快照功能的存储系统,而不是内存中,消除了内存空间大小的局限性,可适用于各种大数据流计算领域,并可通过存储系统自身的快照功能执行快照操作,将快照操作得到的快照数据与任务关联存储,改动小,易实现且实现成本低。
为了便于理解,本实施例下面结合任务的数据保存方法为示例进行说明,请参见图1所示,包括:
s101:获取任务当前检查点的任务执行数据。
在本实施例中,任务(task),可用于负责并发执行流处理作业(job)的各种算子(operator),例如一个作业(job)可包括多个任务(task),具体可包括但不限于:数据源算子,各类数据计算算子,数据输出算子。
在本实施例中,对于作业的之任务的检查点的生成触发方式以及检查点获取任务执行数据的方式不做任何限制,可以采用各种检查点生成触发方式,以及任务执行数据的获取方式。
例如,在一种示例中,可在流处理系统输入数据流(事件流)中插入屏障事件(barrierevent),当任务(task)收到屏障事件,即可触发检查点创建。创建的检查点是对任务的算子当前的任务执行数据(也即计算状态)的一个拷贝,在一种示例中,任务执行数据可包括但不限于当前缓存的数据流,与数据流相关的状态信息,以及中间结果数据中的至少一种。
在本实施例中,检查点的实现可在流计算框架内实现。
在本实施例中,对于获取的当前检查点的任务执行数据可以缓存在内存中,且对于该任务上一检查点的任务执行数据可以缓存在内存中,以便于后续确定任务两个检查点之间的变化数据。当然,应当理解的是,对于该任务检查点的任务执行数据,可以仅在内存中存储当前检查点和上一检查点的任务执行数据,从而减少对内存资源的占用。在一些应用场景中,当确定任务的变化数据并不限于两个检查点之间的变化数据时,内存中所存储的检查点的任务执行数据对应的可不限于当前检查点和上一检查点的任务执行数据。且应当理解的是,本实施例中当前检查点的任务执行数据也并不限于存储在内存中。
s102:根据当前检查点的任务执行数据和任务上一检查点的任务执行数据,确定任务在两个检查点之间的变化数据。
例如,一种示例中,从内存中获取任务上一检查点的任务执行数据,并将当前检查点的任务执行数据与任务上一检查点的任务执行数据进行比较,得到任务在两个检查点之间变化的变化数据;
且可选地,在得到任务在两个检查点之间变化的变化数据之后,为了提升内存资源利用率,还包括:从内存中将任务上一检查点的任务执行数据删除。
在本实施例的一些示例中,s102可以通过但不限于设置于流计算框架内的增量计算模块执行。在本示例中,该增量计算模块可为内存对象增量计算装置;增量计算模块完成的功能包括但不限于:
跟踪任务的算子缓存在内存中的状态数据,包括任务当前检查点的任务执行数据和任务上一检查点的任务执行数据,确定任务当前检查点的任务执行数据与任务上一检查点的任务执行数据之间的变化数据。其中,该变化数据可具体包括但不限于:任务(task)执行的算子状态数据在两次检查点之间的变化量。包括但不限于对状态数据的修改、状态数据的删除、状态数据的新增。
在本实施例中,如果当前的检查点是第一个检查点,变化数据可为此刻任务算子的全量数据。在将第一个检查点的状态数据(也即任务执行数据)存入存储系统后,该任务的检查点数据在存储系统中就有了一个存储位置(例如文件路径或者对象id等),并将此存储位置信息返回给增量计算模块维护。且此任务的后续检查点状态数据后续变化写入存储系统时也不会改变这个存储位置(也即沿用这个存储位置)。增量计算模块控制将后续的变化数据写入存储系统前(或写入存储系统后),触发存储系统快照;在本实施例的一种示例中,存储系统执行快照得到的快照数据可为存储系统自己快照机制维护的内部数据,可不对外暴露,从而提升存储控制的安全性。
在本实施例中,确定任务当前检查点的任务执行数据与任务上一检查点的任务执行数据之间的变化数据时,可以根据具体应用场景采用对应的比对规则进行比较。例如,当一应用场景中,任务执行数据中包括需要取当前最新状态的这一类数据时,例如计数值、计时值等数据,则在确定当前检查点的任务执行数据与上一检查点的任务执行数据内都包括这一类数据时,则直接确定当前检查点的任务执行数据中这一类数据为变化数据。例如,假设上一检查点的任务执行数据包括技术数据a,当前检查点的任务执行数据也包括技术数据a,则直接确定当前检查点的任务执行数据中包括的技术数据a为变化数据。又例如,在另一些应用场景中,对于任务执行数据的至少一分数据,可以将当前检查点的任务执行数据与上一检查点的任务执行数据内对应的数据进行比较,以判断二者是否一致,入不一致,则确定该数据发生了变化,确定为变化数据;当在上一检查点的任务执行数据内未查找到当前检查点的任务执行数据中某一数据所对应的数据时,则该数据为新增的数据;当在上一检查点的任务执行数据中,包括某一数据,但该数据在当前检查点的任务执行数据中未查找到对应的数据时,表明该数据为删除的数据。
s103:将变化数据存入具有快照功能的存储系统,以及控制存储系统执行快照操作,并在存储系统中维护所述任务的任务执行数据的存储位置;其中一种示例的存储位置维护过程请参见上述示例所示,在此不再赘述。
在本实施例的一些示例中,对于控制将变化数据存入具有快照功能的存储系统,以及控制存储系统执行快照操作,并控制存储系统将快照操作得到的快照数据与任务关联存储可包括但不限于:
在确定出的变化数据不为空时,在示例a中,可以控制存储系统执行快照操作后,将变化数据存入存储系统;在示例b中,可在将变化数据存入存储系统后,控制存储系统执行快照操作。其中,维护任务的数据在存储系统中的存储位置的方式可包括但不限于:获取任务的变化数据在存储系统内存储的位置信息,并与任务的标识信息(例如包括但不限于任务id)以及该任务的检查点的标识信息(例如可包括但不限位状态id)关联,该步骤可由但不限于增量计算模块执行。
其中,存储系统内存储的位置信息为存储系统定义的用于定位存储系统上用户数据位置的各种信息,例如可包括但不限于例如lunid、文件路径、对象id等标识信息。且本实施例中,存储系统可以根据需求采用各种具备快照功能的系统,例如可包括但不限于分布式块存储系统、分布式文件存储系统、分布式对象存储系统。
在确定出的变化数据为空时,在示例a中,可直接控制存储系统执行快照操作,此次将快照操作得到的快照数据为任务的上一检查点(例如第n-1个检查点)对应的数据;在示例b中,可直接控制存储系统执行快照操作,此次将快照操作得到的快照数据为任务当前检查点(例如第n个检查点)对应的数据。
可选地,在本实施例的一些应用场景中,在变化数据不为空时,将变化数据存入存储系统可包括但不限于:
在变化数据中包括新增的数据时,由存储系统分配新的存储空间,将新增的数据存入该新的存储空间内;
在变化数据中包括与上一检查点的任务执行数据相比存在修改后的数据(及状态数据)时,控制存储系统利用写时拷贝机制(copyonwrite),将存储系统中存储的修改后的数据所对应的原数据拷贝一份并设置为只读,再将存储系统中存储的修改后的数据所对应的原数据,更新为修改后的数据;具体的,当确定某个状态数据发生变化,可获取该状态数据对应的原数据在存储系统上的位置,控制存储系统利用写时拷贝机制将存储系统中存储的修改后的数据所对应的原数据拷贝一份并设置为只读,并将该位置上的原数据修改为发生变化之后的状态数据。
在变化数据中包括上一检查点的任务执行数据中的某一被删除的数据时,将存储系统中存储的被删除的数据所对应的原数据删除。
通过以上过程,可利用流计算框架内的增量计算模块确定出任务在相邻检查点之间的变化数据(也即增量数据),并存储在存储系统内,利用存储系统自带的快照功能对存储系统实现快照,从而实现对任务运行过程中各检查点对应的数据通过快照功能进行存储,以便于任务失败后,在任务恢复过程中灵活调用。
例如,一种任务的恢复方法请参见图2所示,包括:
s201:在任务重新启动后,根据该任务的数据在存储系统中的存储位置,从存储系统中获取该任务的检查点对应的数据,其中任务的各检查点对应的数据可通过上所述的数据保存方法存储在所述存储系统中。
在本实施例中,流处理作业意外失败,包括各种可能导致作业意外崩溃的失败;在检测到任务失败时,可重新启动运行该作业;作为被重新运行的作业的执行者,集群中属于该作业的各个任务重新启动。在本实施例中,从存储系统中获取任务的检查点对应的数据时,可以根据任务的标识信息、检查点的标识信息在存储系统的相应存储位置查找到该任务的检查点对应的数据,且存储系统可以从快照中恢复出完整的检查点数据。对自带快照机制的存储系统来说,这一过程可以非常高效完成。
s202:根据获取的检查点对应的数据恢复出该任务之算子的计算状态。
在本实施的一些示例中,可以根据任务最近一次的检查点对应数据恢复出该任务之算子的计算状态;也可以根据具体应用需求选择相应检查点对应数据恢复出该任务之算子的计算状态。
在本实施例中,任务中的算子从恢复出的计算状态处后可继续执行。
本实施例提供的任务的数据保存及恢复方法,可利用存储系统快照功能实现检查点增量存储的方法,通过为流处理系统新增一个增量计算模块,直接使用底层存储系统的快照功能,保存任务不同时刻检查点的任务执行数据。不需要为流处理系统引入复杂的数据备份机制,也不需要借助第三方组件的数据备份机制,直接利用了底层存储系统的快照机制实现增量数据的保存和维护,在满足流处理系统增量保存检查点数据这项需求的同时,降低了流处理系统的复杂度和对外依赖程度,存储系统的高性能快照也保证了增量数据维护的效率,一定程度降低增量数据维护开销。
实施例二:
本实施例提供了一种任务的数据保存装置,其可应用于各种服务器内,请参见图3所示,包括:
增量计算模块301,用于获取任务当前检查点的任务执行数据,根据当前检查点的任务执行数据和任务上一检查点的任务执行数据,确定任务在两个检查点之间的变化数据,并控制将变化数据存入具有快照功能的存储系统,以及控制存储系统执行快照操作,并维护所述任务的任务执行数据在所述存储系统中的存储位置。对于增量计算模块301的以上具体处理过程请参见上述各实施例所示,在此不再赘述。
本实施例还提供了一种任务的恢复装置,其也可应用于各种服务器内,请参见图4所示,包括:
任务恢复模块302,用于在任务重新启动后,根据该任务的数据在存储系统中的存储位置,从存储系统中获取任务的检查点对应的数据,根据获取的检查点对应的数据恢复出任务之算子的计算状态;任务的各检查点对应的数据通过如上实施例所示的数据保存方法存储在存储系统中。且对于任务恢复模块302的以上具体处理过程请参见上述各实施例所示,在此也不再赘述。
另外,在本实施例的一些示例中,任务的恢复装置和任务的数据保存装置设置于服务器中时,对于增量计算模块301和任务恢复模块302的以上功能可通过但不限于服务器中的处理器实现。
为了便于理解,本实施例下面结合基于存储系统快照的流计算框架检查点机制架构示意图为示例进行说明。请参见图5所示,本示例中,基于存储系统快照的流计算框架检查点机制,包括:作业管理器(jobmanager)401、任务(task)402、增量计算模块(diffcompute)403、存储系统(storagesystem)404,其中,作业管理器401,用于管理某个流处理作业包含的所有任务402,包括在计算集群上启动、停止、接收任务执行状态数据等;还用于触发任务402的检查点的生成。
本示例中,作业管理器401触发检查点生成可包括,作业管理器401以一定频率定期向输入数据流中插入屏障事件(barrierevent),每一个屏障事件将数据流分成两段,任务402的算子每收到一个屏障事件,就对收到的屏障事件的当前处理状态创建一个检查点。检查点是对任务402算子当前的计算状态的一个拷贝,包括但不限于缓存的数据流消息、与数据流相关的状态、计算的中间结果数据等。
任务402用于执行作业的计算逻辑,并在内存中维护计算状态,包括:缓存的数据流消息、与数据流相关的状态、计算的中间结果数据等等。
增量计算模块403,用于确定两次检查点的变化数据(也即数据变化量),也就是两次触发检查点时刻任务402某算子的状态差异,还用于确定及维护任务402状态数据(也即检查点的任务执行数据中的数据)在存储系统上的位置。
其中,增量计算模块403确定检查点数据变化量,可包括但不限于,对于只需要取最新状态的数据,可使用kv结构跟踪任务402算子的状态,如果key值相同后来的数据将覆盖之前的数据。
增量计算模块403维护状态数据在存储系统上的位置,具体可包括但不限于:当向存储系统404写入检查点的任务执行数据后,记录该任务执行数据中的各状态数据在存储系统上的位置;当以任务的状态id(也即任务的检查点的标识信息)来查询时,返回该任务执行数据中的各状态数据在存储系统上的位置;例如可包括但不限于:分布式块存储系统、分布式文件存储系统、分布式对象存储系统等用于确定存储对象位置的标识,例如lunid、文件路径、对象id等标识。
存储系统404,用于存储检查点的任务执行数据,还用于维护检查点的任务执行数据的快照数据。本实施例中的存储系统可包括但不限于:分布式块存储系统、分布式文件存储系统或分布式对象存储系统等。
其中,存储系统404维护检查点快照信息可包括但不限于:在存储系统104的某个用于存放检查点的空间开启快照功能,使之能够对该空间执行快照;当有增量计算模块403发来数据写入时能够先对前一检查点的数据(cow写时拷贝)拷贝,从而维护不同时刻的检查点数据。如果有新增的数据,则写入空白位置。
基于图5所示的基于存储系统快照的流计算框架检查点机制,本实施例中的基于存储系统快照的流计算框架检查点机制流程示意图请参见图6所示,包括:
s601:作业管理器401定期向输入数据流中插入屏障事件,作为触发检查点的源头。
在本示例中,作业管理器401插入屏障事件可包括但不限于:用户配置了检查点频率,作业管理器401按照已配置的频率,定期向数据源算子(数据源通常也被看作是一种算子)中插入屏障事件(barrierevent),作为分布式全局状态生成检查点的同步方式。
s602:任务402收到屏障事件,为当前的算子状态生成检查点。
本示例中所述屏障事件触发了某个具体task的检查点创建操作。具体包括:任务402启动一个与算子逻辑相异步的处理流程,该流程调用增量计算模块的功能用于确定状态变化情况。
s603:增量计算模块403确定本次检查点的任务执行数据相对上次检查点的任务执行数据的变化及在存储系统上的位置。
在本示例中,具体的,增量计算模块403确定检查点任务执行数据变化的情况及位置,包括:增量计算模块403按状态id,查询在存储系统中维护的任务各状态id(及检查点)的状态数据,确定状态数据的更新情况,以及是不是新增的状态数据,并获取状态数据在存储系统上的位置。
s604:判断当前检查点的状态数据是否有变化;如否,转至s605;否则,转至s606。
本示例中判断是否有变化,具体是根据增量计算模块403的输出结果来判断,增量计算模块403可以确定某项具体状态数据的变化情况,从而也可以确定此次检查点的所有状态数据变化情况。
s605:如果此次检查点数据没有任何变化,增量计算模块403通知存储系统执行快照操作,但不写入任何数据。
本示例中只快照不写数据,具体来说是存储系统只做快照而没有数据要写入,其实只是更新了存储系统元数据信息,开销很低,很快即可完成。
s606:如果此次检查点数据有变化,增量计算模块403通知存储系统执行快照操作。
与s605类似,当前检查点的状态数据相对上一次有变化,也要通知存储系统做快照操作,这将为后续的增量数据写入做好准备。
s607:判断检查点的状态数据是否有新增数据,如是,转至s608;否则,转至s609。
在本示例中,判断检查点的状态数据是否有新增,是指按增量计算模403的输出判断有没有新增的状态数据。
s608:在存储系统上空白位置(也即存储系统新分配的存储位置)写入新增的状态数据。
在本示例中,在存储系统空白位置写入新增的状态数据,包括:找到存储系统上一块新的空间,写入新增的状态数据,并将新空间的位置信息返回给增量计算模块403,用于下一次修改数据时查找位置。
s609:将要修改的状态数据复制一份后在原位置写入更新后的数据。
在示例中,将修改的状态数据写入,包括:根据增量计算模块403提供的位置信息,找到待修改的某项状态数据在存储系统的位置,通过上述s606中存储系统执行快照操作复制一份后(该复制出来的这份数据变为只读);然后在原位置写入修改后的状态数据。
请参见图7所示,本实施例中基于存储系统快照的流计算框架检查点机制恢复流程示意图,基于存储系统快照的流计算框架检查点恢复流程包括:
s701:流处理作业意外失败,包括各种可能导致作业意外崩溃的失败。
s702:作业管理器检测到任务失败,会重新启动运行该作业。
s703:作为被重新运行的作业的执行者,集群中属于该作业的各个任务重新启动。
s704:任务从增量计算模块查询到本任务的检查点在存储系统中的位置信息。
s705:按查得的位置信息从存储系统读取最近一次检查点的状态数据。
因检查点的保存使用了存储系统的快照机制,故读取检查点数据也需要利用存储系统的快照机制,存储系统从快照中恢复出完整的检查点数据。对自带快照机制的存储系统来说,这一过程可以非常高效完成。
s706:任务获取的检查点的状态数据中恢复出算子的计算状态,也就是算子最近一次成功执行时的状态。
s707:任务中的算子从恢复出的计算状态处,任务继续执行。
实施例三:
本实施例还提供了一种服务器,参见图8所示,其包括处理器801、存储器802以及通信总线803;
通信总线803用于实现处理器801与存储器802之间的通信连接;
一种示例中,处理器801可用于执行存储器802中存储的第一计算机程序,以实现如上各实施例中的任务的数据保存方法的步骤;
和/或,处理器801可用于执行存储器802中存储的第二计算机程序,以实现如上各实施例中的任务的恢复方法的步骤。
本实施例还提供了一种计算机可读存储介质,该计算机可读存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、计算机程序模块或其他数据)的任何方法或技术中实施的易失性或非易失性、可移除或不可移除的介质。计算机可读存储介质包括但不限于ram(randomaccessmemory,随机存取存储器),rom(read-onlymemory,只读存储器),eeprom(electricallyerasableprogrammablereadonlymemory,带电可擦可编程只读存储器)、闪存或其他存储器技术、cd-rom(compactdiscread-onlymemory,光盘只读存储器),数字多功能盘(dvd)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。
在一种示例中,本实施例中的计算机可读存储介质可用于存储第一计算机程序,该第一计算机程序可被处理器执行,以实现如上各实施例中的任务的数据保存方法的步骤;和/或本实施例中的计算机可读存储介质可用于存储第二计算机程序,该第二计算机程序可被处理器执行,以实现如上各实施例中的任务的恢复方法的步骤。
本实施例还提供了一种第一计算机程序(或称第一计算机软件),该第一计算机程序可以分布在计算机可读介质上,由可计算装置来执行,以实现如上各实施例中的任务的数据保存方法中的至少一个步骤;并且在某些情况下,可以采用不同于上述实施例所描述的顺序执行所示出或描述的至少一个步骤。
本实施例还提供了一种第二计算机程序(或称第二计算机软件),该第二计算机程序可以分布在计算机可读介质上,由可计算装置来执行,以实现如上各实施例中的任务的恢复方法的至少一个步骤;并且在某些情况下,可以采用不同于上述实施例所描述的顺序执行所示出或描述的至少一个步骤。
本实施例还提供了一种计算机程序产品,包括计算机可读装置,该计算机可读装置上存储有如上所示的任一计算机程序。本实施例中该计算机可读装置可包括如上所示的计算机可读存储介质。
可见,本领域的技术人员应该明白,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件(可以用计算装置可执行的计算机程序代码来实现)、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。
此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、计算机程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。所以,本发明不限制于任何特定的硬件和软件结合。
以上内容是结合具体的实施方式对本发明实施例所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
1.一种任务的数据保存方法,包括:
获取任务当前检查点的任务执行数据;
根据所述当前检查点的任务执行数据和所述任务上一检查点的任务执行数据,确定所述任务在所述两个检查点之间的变化数据;
将所述变化数据存入具有快照功能的存储系统,以及控制所述存储系统执行快照操作,并在所述存储系统中维护所述任务的任务执行数据的存储位置。
2.如权利要求1所述的任务的数据保存方法,其特征在于,所述控制将所述变化数据存入具有快照功能的存储系统,以及控制所述存储系统执行快照操作包括:
在所述变化数据不为空时,控制所述存储系统执行快照操作后,将所述变化数据存入所述存储系统;或,将所述变化数据存入所述存储系统后,控制所述存储系统执行快照操作;
在所述变化数据为空时,控制所述存储系统执行快照操作。
3.如权利要求2所述的任务的数据保存方法,其特征在于,在所述变化数据不为空时,所述将所述变化数据存入所述存储系统包括:
在所述变化数据中包括新增的数据时,由所述存储系统分配新的存储空间,将所述新增的数据存入由所述存储系统分配的新的存储空间内;
在所述变化数据中包括与上一检查点的任务执行数据相比存在修改后的数据时,控制所述存储系统利用写时拷贝机制,将所述存储系统中存储的所述修改后的数据所对应的原数据拷贝一份并设置为只读,再将所述存储系统中存储的所述修改后的数据所对应的原数据,更新为所述修改后的数据。
4.如权利要求1-3任一项所述的任务的数据保存方法,其特征在于,所述任务执行数据包括当前缓存的数据流,与数据流相关的状态信息,以及中间结果数据中的至少一种。
5.如权利要求1-3任一项所述的任务的数据保存方法,其特征在于,所述存储系统为分布式块存储系统、分布式文件存储系统或分布式对象存储系统。
6.如权利要求1-3任一项所述的任务的数据保存方法,其特征在于,所述根据所述当前检查点的任务执行数据与所述任务上一检查点的任务执行数据,确定所述任务在所述两个检查点之间的变化数据包括:
从内存中获取所述任务上一检查点的任务执行数据,并将所述当前检查点的任务执行数据与所述任务上一检查点的任务执行数据进行比较,得到所述任务在所述两个检查点之间变化的变化数据;
从内存中将所述任务上一检查点的任务执行数据删除。
7.一种任务的恢复方法,包括:
在任务重新启动后,根据所述任务的数据在所述存储系统中的存储位置,从存储系统中获取所述任务的检查点对应的数据,所述任务的各检查点对应的数据通过如权利要求1-6任一项所述的数据保存方法存储在所述存储系统中;
根据获取的检查点对应的数据恢复出所述任务之算子的计算状态。
8.一种任务的数据保存装置,其特征在于,包括:
增量计算模块,用于获取任务当前检查点的任务执行数据,根据所述当前检查点的任务执行数据和所述任务上一检查点的任务执行数据,确定所述任务在所述两个检查点之间的变化数据,将所述变化数据存入具有快照功能的存储系统,以及控制所述存储系统执行快照操作,并在所述存储系统中维护所述任务的任务执行数据的存储位置。
9.一种任务的恢复装置,其特征在于,包括:
任务恢复模块,用于在任务重新启动后,根据所述任务的数据在所述存储系统中的存储位置,从存储系统中获取所述任务的检查点对应的数据,根据获取的检查点对应的数据恢复出所述任务之算子的计算状态;所述任务的各检查点对应的数据通过如权利要求1-6任一项所述的数据保存方法存储在所述存储系统中。
10.一种服务器,其特征在于,包括处理器、存储器和通信总线;
所述通信总线用于将所述处理器和存储器连接;
所述处理器用于执行所述存储器中存储的第一计算机程序,以实现如权利要求1-6任一项所述的任务的数据保存方法的步骤;
和/或,
所述处理器用于执行所述存储器中存储的第二计算机程序,以实现如权利要求7所述的任务的恢复方法的步骤。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有第一计算机程序,所述第一计算机程序可被处理器执行,以实现如权利要求1-6任一项所述的任务的数据保存方法的步骤;
和/或,
所述计算机可读存储介质存储有第二计算机程序,所述第二计算机程序可被处理器执行,以实现如权利要求7所述的任务的恢复方法的步骤。
技术总结