一种应用于共享文件系统的任务再调度方法与流程

文档序号:12753456阅读:394来源:国知局

本发明涉及通信技术领域,特别是一种应用于共享文件系统的任务再调度方法。



背景技术:

海量数据处理是分布式系统中的一个典型应用。在这类应用中,有一类应用的数据有以下两个特点:

(1)保存在共享文件系统中,系统的每个节点都能通过共享文件系统的客户端访问这些数据。

(2)数据存在共性,而数据的共性存在固定的取值范围,数据可以根据取值范围保存在不同的文件中。

针对这类应用的特点,我们通常是将不同取值范围的数据文件调度给不同的节点进行处理。在处理数据的过程中,节点失效及节点恢复是需要考虑的一个问题。如何将失效节点的任务重新调度至其他节点和节点恢复时如何重新接管任务是确保任务顺利完成的一个重要因素,本发明提出的方法即针对该问题。

目前节点失效和节点恢复的任务再调度通常有以下几种方式:

集中式:该方式中设置一个专门的调度节点,其他的节点都是处理节点,调度节点监控处理节点的状态。当某个处理节点失效时,将该节点的任务重新分配至其他健康节点,当失效节点恢复健康状态时,将原来的任务重新由该节点接管。这种方式实现简单,但是调度节点可能成为瓶颈,并且存在单点故障。

两两互备式:该方式中节点之间两两配对,配对节点互为主备关系。即假定节点A和B为配对节点,节点A失效时,其任务由B进行处理,节点A恢复时接管原有任务,节点B的失效和恢复也是如此。这种方式实现简单,不存在单点故障问题,但如果配对节点均失效,则其任务没有节点接管。

集群式:该方式是两两互备式的升级版本,当一个节点失效时,需要多个健康节点之间进行协商选出一个节点接管其任务。这种方式可以容忍多个节点同时出现故障,但是涉及到多个节点间的通信,实现起来比较复杂。



技术实现要素:

为了克服现有技术的不足,本发明提供了一种应用于共享文件系统的任务再调度方法,该方法实现简单,没有单点故障并能容忍多个节点同时出现故障,能较好地将任务分派给分布式系统中的各个节点。

本发明解决其技术问题所采用的技术方案是:一种应用于共享文件系统的任务再调度方法,包括如下步骤:

当某个节点失效时,多个未失效节点之间进行失效节点任务的抢占操作,抢占成功的节点接管失效节点的任务。

优选的,所述抢占操作利用对某一文件的重命名操作来实现,即所述多个未失效节点同时对同一个文件进行重命名操作,操作成功的某个节点为抢占成功的节点。

优选的,所述文件为初始时在共享文件系统中创建的以“Ti-Nj”命名的文件,其中,Ti为任务编号,Nj为节点编号。

优选的,每个节点上运行一个进程,在所述抢占操作之前,遍历上述所有文件,检查每个文件的文件名和修改时间,判断是否进行抢占操作。

优选的,以编号为k的节点,文件名为Ti-Nj的文件为例,所述判断是否进行抢占操作的步骤具体为:

a.若i=k,j=k,表明该任务正由节点k进行处理,更新该文件的修改时间,继续处理该任务;

b.若i=k,j≠k,表明该任务原由节点k处理,节点k曾经失效过,被其他节点抢占进行处理,现在节点k已恢复至健康状态,进行抢占回本节点任务的处理;

c.若i≠k,j=k,表明该任务原由节点Ni处理,Ni失效时由Nk抢占成功,此时更新该文件的修改时间并继续处理该任务;

d.若i≠k,j≠k,表明该任务由其他节点处理,此时判断Nj是否失效,若失效则由其它节点进行抢占操作。

优选的,步骤b中所述进行抢占回本节点任务的处理具体为:检查文件Ti-Nj的修改时间距离当前时间是否已超过失效时间,如超过,则表明节点Nj已失效,此时所有发现Nj失效的健康节点进行抢占,节点Nk尝试将Ti-Nj重命名为Ti-Nk,如果成功则说明抢占成功,更新Ti-Nk的修改时间,处理任务Ti;如未超过,则需要与Nj进行通信,通知Nj停止当前任务,然后将Ti-Nj重命名为Ti-Nk,如果成功则说明抢占成功,更新Ti-Nk的修改时间,处理任务Ti。

优选的,步骤d中所述判断Nj是否失效,若失效则由其它节点进行枪战操作具体为:检查文件Ti-Nj的修改时间距离当前时间是否已超过失效时间,如超过,则节点Nj已失效,此时所有发现Nj失效的健康节点进行抢占,节点Nk尝试将Ti-Nj重命名为Ti-Nk,如果成功则说明抢占成功,更新Ti-Nk的修改时间,处理任务Ti。

本发明的积极效果:本文提出一种集群式调度的实现方法,该方法无需多个节点之间进行通信选出接管节点,而是让多个节点之间进行失效节点任务的抢占,抢占成功的节点接管失效节点的任务,节点恢复时也进行任务的抢占。其中抢占的过程需要有一个“裁判”来决定谁能抢占成功,而共享文件系统的服务器正好可以充当这个“裁判”的角色。抢占这个操作利用文件重命名操作来实现,而多个文件系统客户端同时对同一个文件的重命名操作时只会有一个成功返回,即只会有一个抢占成功。判断节点失效的机制可以基于文件修改时间来实现。本发明利用共享文件系统中多个客户端进行文件重命名具有排他性这一特点,提出一种在节点失效时利用重命名操作进行任务抢占的任务再调度方法,本发明方法实现简单,没有单点故障并能容忍多个节点同时出现故障,能较好地将任务分派给分布式系统中的各个节点,本发明方法可以较好地利用共享文件系统的特点,很好的解决了节点失效时任务再调度的问题。

附图说明

图1是本发明的流程示意图。

具体实施方式

下面结合附图对本发明的优选实施例进行详细说明。

参照图1,本发明优选实施例提供一种应用于共享文件系统的任务再调度方法,该方法无需多个节点之间进行通信选出接管节点,而是让多个节点之间进行失效节点任务的抢占,抢占成功的节点接管失效节点的任务,节点恢复时也进行任务的抢占。抢占操作利用文件重命名操作来实现,而多个节点同时对同一个文件的重命名操作时只会有一个成功返回,即只会有一个抢占成功。判断节点失效的机制可以基于文件修改时间来实现,具体的实现如下所述:

假定节点数和任务数(数据文件数)相同,均为n,节点编号从N1到Nn,任务编号从T1到Tn。所有节点均为健康状态时,每个节点处理一个任务,即节点Ni处理任务Ti。我们将任务Ti与节点Nj组成“任务-节点”对,即Ti-Nj表示任务i由节点j进行处理。初始时,我们在共享文件系统中创建n个以“Ti-Nj”命名的文件,表示n个“任务-节点”对,即T1-N1,T2-N2...Tn-Nn,表明Ni处理编号与之相同的任务Ti,Ti从属于Ni。

每个节点上运行一个进程,遍历这n个文件,检查每个文件名和文件的修改时间。我们以编号为k的节点,文件名为Ti-Nj的文件为例,进行以下判断:

1)若i=k,j=k,这表明该任务由本节点进行处理,故只需更新该文件的修改时间即可,继续处理该任务。

2)若i=k,j≠k,这表明该任务原由本节点处理,本节点曾经失效过,被其他节点抢占进行处理,现在本节点已恢复至健康状态,故需要抢占回本节点进行处理。检查文件Ti-Nj的修改时间是否距离当前时间是否已超过失效时间,如超过,则表明节点Nj已失效,此时所有发现Nj失效的健康节点进行抢占。节点Nk尝试将Ti-Nj重命名为Ti-Nk,如果成功则说明抢占成功,更新Ti-Nk的修改时间,处理任务Ti。如未超过,则需要与Nj进行通信,通知Nj停止当前任务,然后将Ti-Nj重命名为Ti-Nk,如果成功则说明抢占成功,更新Ti-Nk的修改时间,处理任务Ti。

3)若i≠k,j=k,这表明该任务原由节点Ni处理,Ni失效时由Nk抢占成功,故只需更新该文件的修改时间即可,继续处理该任务。

4)若i≠k,j≠k,这表明该任务由其他节点处理,此时需判断Nj是否失效。检查文件Ti-Nj的修改时间是否距离当前时间是否已超过失效时间,如超过,则表明节点Nj已失效,此时所有发现Nj失效的健康节点进行抢占。节点Nk尝试将Ti-Nj重命名为Ti-Nk,如果成功则说明抢占成功,更新Ti-Nk的修改时间,处理任务Ti。

以上是任务数与节点数相同的情形,通常任务数会大大超过节点数,我们可将任务按照某种规则进行哈希计算,具有相同哈希值的任务分派给相同的节点进行处理。

综上所述,本发明方法可以很好地利用共享文件系统的特点,从而很好的解决节点失效时任务再调度的问题。

以上所述的仅为本发明的优选实施例,所应理解的是,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想,并不用于限定本发明的保护范围,凡在本发明的思想和原则之内所做的任何修改、等同替换等等,均应包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1