分布式处理中的容错方法及设备技术

技术编号:21184069 阅读:50 留言:0更新日期:2019-05-22 14:53
本发明专利技术的目的是提供一种分布式处理中的容错方法及设备,本发明专利技术针对易出错类型的作业开启数据持久化,即满足所述易出错类型的作业,其实例从备份数据库中恢复,不满足所述出错类型的作业,整个作业才重跑,从而将容错的额外开销减到最小。另外,本发明专利技术只对运行时间超过了阈值T的作业进行Instance的容错,若未超过阈值T的作业,则进行整个作业的重跑,从而进一步将容错的额外开销减到最小。

Fault Tolerant Methods and Devices in Distributed Processing

The object of the present invention is to provide a fault-tolerant method and device in distributed processing. The method opens data persistence for jobs of error-prone type, that is, jobs satisfying the error-prone type are restored from the backup database, and jobs of the error-prone type are not satisfied, so that the whole job can run again, thereby minimizing the additional cost of fault-tolerance. In addition, the present invention only makes Instance fault-tolerant for jobs whose running time exceeds threshold T, and if jobs whose running time does not exceed threshold T, runs the whole job again, thereby further minimizing the additional cost of fault-tolerance.

【技术实现步骤摘要】
分布式处理中的容错方法及设备
本专利技术涉及计算机领域,尤其涉及一种分布式处理中的容错方法及设备。
技术介绍
在分布式系统中的在线服务(OnlineJob),负责处理用户提交的作业(Job)。在线服务(OnlineJob)是指为作业(Job)运行加速的实时计算框架,在线服务以服务的形态启动于生产集群,服务的进程常驻在服务器上,采用网络数据洗牌(NetworkShuffle)和纯内存计算。一个作业(Job)包含多个子任务(Task),一个Task包含若干个实例(Instance),每个Instance运行在一个节点上。Instance是作业(Job)中的最小划分单元。作业(Job)执行过程中,每一个实例(Instance)都需要将其运行产生的数据通过网络发送到其下游的所有实例(Instance),然后下游实例根据从上游实例接收的数据进一步得到该下游实例运行产生的数据,并将该下游实例运行产生的数据再通过网络发送到其再下游实例,这个过程即为网络数据洗牌(NetworkShuffle)。在进行网络数据洗牌(NetworkShuffle)时,每一个Instance相对于其上游Instance都是读端(Reader)的角色;在进行网络数据洗牌(NetworkShuffle)时,每一个Instance相对于其下游Instance都是写端(Writer)的角色。分布式系统的在线服务上所运行的Instance,在运行时数据都保持在内存中,各个Instance间的网络数据洗牌(NetworkShuffle)都通过内存直接在网络上传输,然而,由于系统宕机、网络不通、内存出错等等多种情况的存在,分布式系统本身具有的不可靠性特质,任何一个Instance在运行中都有可能运行失败即出错。目前对于Instance运行失败的处理采取了不同处理策略:1.任务/迭代轮/数据块重跑:对于处理运行时间很短,数据量比较少应用的计算框架,发生运行失败时往往采用任务重跑的策略,因为Instance级别的容错往往都需要一定开销,而这些开销对于短作业往往太大;对于多轮迭代类型的图计算计算框架(比如PowerGraph),其容错针对每一轮迭代,每一轮迭代会进行一次数据备份(checkpoint),当发生Instance运行失败时,该Instance所在迭代轮进行重跑;对于流式计算计算框架(比如Storm),其容错针对每一个输入数据块,当某个Instance发生运行失败时,该时刻所对应数据块的所有处理Instance进行重跑。2.基于数据落盘的Instance容错:每一个Instance将计算结果持久化到文件系统中(比如HadoopMapReduce),发生Instance运行失败时,只重跑失败的Instance的即可,重跑Instance的上游数据从持久化的文件系统中读取。3.基于内存容错的Instance容错:每一个Instance将计算结果持久化到高容错内存系统中(比如ApacheSpark将数据持久化到RDD中),发生Instance失败时,重跑的Instance从持久化的数据中读取输入数据。上述三种现有方案存在的问题如下:1.作业/迭代轮/数据块重跑,只适用于计算时间非常短的应用场景,对于运行时间比较长的作业,整个作业的重跑,浪费了正常Instance的计算结果,对于大数据量作业而言浪费过于严重;2.基于数据落盘的Instance容错,以最为流行的HadoopMapReduce具体分析,其作业模型非常简单,并且Map阶段和Reduce阶段必须有Barrier来保证重跑的正确性,并且所有Map阶段的输出数据均先落盘,再进行NetworkShuffle,这些开销如果是在线作业则开销过大;3.基于内存容错的Instance容错,以最为流行的ApacheSpark为例,容错数据保存在RDD中,RDD需要上层应用显式地进行操作,这样无疑增加了应用的复杂性,其次,所有的数据都缓存在内存中也增加了内存密集型应用的内存压力。
技术实现思路
本专利技术的一个目的是提供一种分布式处理中的容错方法及设备,能够解决现有的数据容错方案开销过大的问题。根据本专利技术的一个方面,提供了一种分布式处理中的容错方法,该方法包括:确定分布式系统中的实例所属的作业的类型为预设的易出错类型;将所述实例运行产生的数据块发送到所述实例的下游实例,以及将所述数据块发送到备份数据库中。进一步的,上述方法中,还包括:所述实例出错时,从所述备份数据库恢复所述实例。进一步的,上述方法中,当所述实例出错时,从所述备份数据库恢复所述实例,包括:所述实例出错时,判断所述实例所属的作业已经运行的时间是否大于作业运行时间阈值,若大于作业运行时间阈值,则从所述备份数据库恢复所述实例。进一步的,上述方法中,所述作业运行时间阈值根据重新运行所述实例所属的作业与从所述备份数据库恢复所述实例的所浪费的资源值之和的最小值确定。进一步的,上述方法中,所述实例出错时,判断所述实例所属的作业已经运行的时间是否大于作业运行时间阈值之后,还包括:若小于等于作业运行时间阈值,重新运行所述实例所属的作业。进一步的,上述方法中,当所述实例作为下游实例时,所述实例出错时,从所述备份数据库恢复所述实例,包括:所述实例出错时,重启所述实例,将重启后的实例的更新地址发送至其上游实例;判断所述实例已经运行的时间是否大于实例运行时间阈值,若小于等于实例运行时间阈值,则阻塞所述实例的上游实例基于所述更新地址并通过网络发送数据块,并阻塞所述实例的上游实例将所述数据块存储到备份数据库中;所述重启后的实例从所述备份数据库中拉取其上游实例的数据块,拉取完毕后停止所述阻塞。进一步的,上述方法中,判断所述实例已经运行的时间是否大于实例运行时间阈值之后,还包括:若大于实例运行时间阈值,所述实例不断从所述备份数据库中拉取其上游实例的数据块,直到满足结束条件,所述结束条件包括拉取完毕所述备份数据库中的所有数据块,或所述实例收到其上游实例发送的数据块在顺序上为当前已经从所述备份数据库中拉取的最后一个数据块的下一个数据块;同时所述实例从网络接收其上游实例发送来的数据块,并判断接收到的数据块在顺序上,是否是当前已经从所述备份数据库中拉取的最后一个数据块的下一个数据块,若否,则将该接收到的数据块丢弃,若是,则接受该数据块,并停止从所述备份数据库中拉取其上游实例的数据块。进一步的,上述方法中,所述实例作为上游实例时,当所述实例出错时,从所述备份数据库恢复所述实例,包括:所述实例查询由其发送的数据块中,其下游实例已经接受的最后一个数据块;所述实例同时作为下游实例,所述实例出错时,从所述备份数据库恢复所述实例;判断所述实例中已经恢复的数据块在顺序上,是否是所述下游实例已经接受的最后一个数据块的下一个数据块,若是,所述实例将已经恢复的数据块通过网络发送至其下游实例的同时,将所述数据块发送到备份数据库中;若否,所述实例仅将所述数据块发送到备份数据库中。进一步的,上述方法中,所述实例将已经恢复的数据块通过网络发送至其下游实例的同时,还包括:所述实例的下游实例在在收到数据块时做去冗余操作。进一步的,上述方法中,所述实例将所述数据块发送到备份数据库中,包括:所述实例将所述数据块发送到其对应的本文档来自技高网
...

【技术保护点】
1.一种分布式系统中的容错处理方法,其中,该方法包括:确定分布式系统中的实例所属的作业的类型为预设的易出错类型;将所述实例运行产生的数据块发送到所述实例的下游实例,以及将所述数据块发送到备份数据库中。

【技术特征摘要】
1.一种分布式系统中的容错处理方法,其中,该方法包括:确定分布式系统中的实例所属的作业的类型为预设的易出错类型;将所述实例运行产生的数据块发送到所述实例的下游实例,以及将所述数据块发送到备份数据库中。2.根据权利要求1所述的方法,其中,还包括:所述实例出错时,从所述备份数据库恢复所述实例。3.根据权利要求2所述的方法,其中,所述实例出错时,从所述备份数据库恢复所述实例,包括:所述实例出错时,判断所述实例所属的作业已经运行的时间是否大于作业运行时间阈值,若大于作业运行时间阈值,则从所述备份数据库恢复所述实例。4.根据权利要求3所述的方法,其中,所述作业运行时间阈值根据重新运行所述实例所属的作业与从所述备份数据库恢复所述实例的所浪费的资源值之和的最小值确定。5.根据权利要求3所述的方法,其中,所述实例出错时,判断所述实例所属的作业已经运行的时间是否大于作业运行时间阈值之后,还包括:若小于等于作业运行时间阈值,重新运行所述实例所属的作业。6.根据权利要求3所述的方法,其中,当所述实例作为下游实例时,所述实例出错时,从所述备份数据库恢复所述实例,包括:所述实例出错时,重启所述实例,将重启后的实例的更新地址发送至其上游实例;判断所述实例已经运行的时间是否大于实例运行时间阈值,若小于等于实例运行时间阈值,则阻塞所述实例的上游实例基于所述更新地址并通过网络发送数据块,并阻塞所述实例的上游实例将所述数据块存储到备份数据库中;所述重启后的实例从所述备份数据库中拉取其上游实例的数据块,拉取完毕后停止所述阻塞。7.根据权利要求6所述的方法,其中,判断所述实例已经运行的时间是否大于实例运行时间阈值之后,还包括:若大于实例运行时间阈值,所述实例不断从所述备份数据库中拉取其上游实例的数据块,直到满足结束条件,所述结束条件包括拉取完毕所述备份数据库中的所有数据块,或所述实例收到其上游实例发送的数据块在顺序上为当前已经从所述备份数据库中拉取的最后一个数据块的下一个数据块;同时所述实例从网络接收其上游实例发送来的数据块,并判断接收到的数据块在顺序上,是否是当前已经从所述备份数据库中拉取的最后一个数据块的下一个数据块,若否,则将该接收到的数据块丢弃,若是,则接受该数据块,并停止从所述备份数据库中拉取其上游实例的数据块。8.根据权利要求7所述的方法,其中,当所述实例作为上游实例时,所述实例出错时,从所述备份数据库恢复所述实例,包括:所述实例查询由其发送的数据块中,其下游实例已经接受的最后一个数据块;所述实例同时作为下游实...

【专利技术属性】
技术研发人员:王博陶阳宇陆一峰吕志强李超吴永军李治刘耀莉
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛,KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1