一种分布式集群及并行计算任务调度方法与流程

文档序号:16879824发布日期:2019-02-15 22:01阅读:374来源:国知局
一种分布式集群及并行计算任务调度方法与流程

本发明属于分布式系统并行计算任务调度技术领域,具体涉及一种分布式集群及并行计算任务调度方法。



背景技术:

近年来,以大数据、云计算、物联网和移动互联网为代表的新一代信息技术蓬勃发展,而支撑这些信息技术发展的任务机(即服务器)规模也越来越庞大。并且随着信息技术应用领域的不断扩展,不同的任务机经常需要同时执行用户的多个应用(即任务)。因此如何高效、合理地对这些跨任务机执行的应用的服务关系进行管理、维护和调度,就成为迫切需要解决的问题。

随着信息技术的发展,针对海量数据的复杂计算任务,垂直升级任务机的配置已经不能满足任务的运行需要,水平扩展任务机集群已被公认是解决问题的最佳办法,但多任务机执行任务,调度的复杂度成倍增加,在现有的分布式系统中任务调度(尤其是分布式内存计算领域)就存在以下问题:

第一,对于每个任务(task),客户端向分布式系统提交请求时,分布式系统会随机选择一台任务机启动一个针对该任务的管理模块(appmaster),负责任务的分配与执行状态的监控,但在大型分布式集群中,单台任务机出现故障的概率比较高,而现有的做法是在appmaster故障一段时间后,分布式系统针对该任务再重新启动一个appmaster,监控整个任务的运行情况,但从旧appmaster故障发生到新的appmaster启动成功,历时时间较长,大型复杂的任务计算实时性无法保证;

第二,对于大型且复杂的任务,可以拆分成多个子任务并发运行,子任务运行过程中会通过心跳向任务管理模块汇报任务状态,但由于任务机自身配置等原因,有些子任务的执行速度过于缓慢,以至于拖延了整个任务的完成时间,进而降低了整个分布式系统对外提供服务的性能。

例如,一篇公布号为cn106874094a、名称为“定时任务处理方法、装置及计算设备”的中国专利就存在上述问题。



技术实现要素:

本发明的目的是提供一种分布式集群及并行计算任务调度方法,用于解决现有分布式系统并行任务的调度和执行效率慢的问题。

为解决上述技术问题,本发明提出一种基于分布式系统的并行计算任务调度方法,包括以下方法方案:

方法方案一,包括如下步骤:

1)根据接收的任务请求,将任务分解成两个以上的子任务,将各子任务分配到各任务机上;

2)实时监测各子任务的完成进度,当已经完成的子任务数量占所有子任务数量的比值达到设定的比值时,将剩余未完成的每个子任务分解成两个以上的次级子任务,将各次级子任务分配到空闲的任务机上。

方法方案二,在方法方案一的基础上,各次级子任务分配到空闲的任务机上进行运算的同时,保持所述剩余未完成的子任务在原来的任务机上继续进行运算,选择最先输出的运行结果作为最终的运行结果。

方法方案三,在方法方案一的基础上,还包括根据接收的任务请求选择第一任务机的步骤,第一任务机用于将任务分解成两个以上的子任务,并将各子任务分配到各任务机上,以及用于监视各任务机执行子任务的进度。

方法方案四,在方法方案三的基础上,包括根据接收的任务请求选择第二任务机的步骤,第二任务机用于在第一任务机工作异常时代替第一任务机工作。

方法方案五,在方法方案四的基础上,所述第一任务机和第二任务机分别设在分布式系统的不同任务机架上。

为解决上述技术问题,本发明还提出一种分布式集群,包括以下集群方案:

集群方案一,包括三个以上的任务机,所述任务机中的一个作为第一任务机,用于将任务分解成两个以上的子任务,将各子任务分配到其他各任务机上,并实时监测子任务的完成进度,当已经完成的子任务数量占所有子任务数量的比值达到设定的比值时,将剩余未完成的每个子任务分解成两个以上的次级子任务,将各次级子任务分配到空闲的任务机上。

集群方案二,在集群方案一的基础上,各次级子任务分配到空闲的任务机上进行运算的同时,保持所述剩余未完成的子任务在原来的任务机上继续进行运算,选择最先输出的运行结果作为最终的运行结果。

集群方案三,在集群方案一的基础上,排除所述第一任务机的剩余任务机中的一个作为第二任务机,用于第一任务机工作异常时代替第一任务机工作。

集群方案四,在集群方案三的基础上,所述第一任务机和第二任务机分别设在分布式系统的不同任务机架上。

本发明的有益效果是:

本发明将待处理的任务进行分解,并对分解的子任务分配到多个任务机上执行,当已经完成的子任务数量与所有子任务数量的占比达到设定比值时,将剩余没有完成的子任务进行再分解,将分解得到的次级子任务分配到其他空闲的任务机上执行。本发明利用集群空闲资源对进度滞后的子任务进行同步计算,提高了任务运行的可靠性,加快了计算任务的运行速度,同时缩短了任务的执行时间。

进一步,在各次级子任务分配到空闲的任务机上进行运算的同时,保持次级子任务分解前的子任务在原来任务机上的运算,并选择最先输出的运行结果作为最终的运行结果,保证子任务在最短的时间内完成。

进一步,再选取一个任务机,一共选取两个任务机分别担任主任务机和备用任务机,第一任务机作为主任务机,第二任务机作为备用任务机,主任务机在正常工作时承担分派子任务、次级子任务的工作,同时监视子任务的完成进度,在主任务机异常时,由备用任务机代替主任务机完成上述工作,有效的提高了分布式计算任务的可靠性和成功率。

进一步,在分布式系统的不同任务机架上选取上述主任务机和备用任务机,进一步提高分布式计算任务的可靠性和成功率,减少了因为任务失败而导致的资源浪费,优化了分布式集群的计算效率。

附图说明

图1是具有两个任务的主、备任务管理模块的分布式系统任务框图,其中一个任务的主、备任务管理模块分别为activeappmaster1和standbyappmaster1,另一个任务的主、备任务管理模块分别为activeappmaster2和standbyappmaster2;

图2是本发明一种任务的具体执行流程图。

具体实施方式

下面结合附图对本发明的具体实施方式作进一步的说明。

实施例一:

本发明基于分布式系统,提出了以下并行计算任务的调度方法:

根据接收的任务请求,将待处理的任务分解成两个以上的子任务,并将各子任务分配到各任务机上。同时,实时监测子任务的完成进度,当已经完成的子任务数量占所有子任务数量的比值达到设定的比值时,将剩余未完成的子任务进行再分解,至少分解成两个次级子任务,将各次级子任务分配到空闲的任务机上。本发明利用集群空闲资源对进度滞后的子任务进行同步计算,提高了任务运行的可靠性,加快了计算任务的运行速度,同时缩短了任务的执行时间。

上述各次级子任务分配到空闲的任务机上进行运算的同时,保持剩余未完成的子任务在原来的任务机上继续进行运算,在剩余未完成的子任务的运算结果和所述各次级子任务的运算结果之中,选择最先输出的运行结果作为最终的运行结果,保证子任务在最短的时间内完成。

本发明子任务的分解和监视工作是通过选取第一任务机并由第一任务机承担上述工作的,为了提高了分布式计算任务的可靠性和成功率,作为第一任务机的备用,还需选取第二任务机作为备用任务机,而第一任务机作为主任务机,主任务机在正常工作时承担分派子任务、次级子任务的工作,同时监视子任务的完成进度,在主任务机异常时,由备用任务机代替主任务机完成上述工作。优选的,主任务机的正常工作状态包括主任务机能够周期上传各子任务的完成进度,主任务机主要异常可以表述为主管理模块失联(断网或断电),因为主备任务管理模块是实时通信的,当主管理模块失联时,即主任务机异常时,备用任务机及时接管主任务机的工作,监控子任务执行。

本发明在分布式系统的不同任务机架上选取上述主任务机和备用任务机,进一步提高分布式计算任务的可靠性和成功率,减少了因为任务失败而导致的资源浪费,优化了分布式集群的计算效率。

基于上述方法,本发明还提供了一种分布式集群,包括三个以上的任务机,任务机中的一个作为第一任务机,用于将任务分解成两个以上的子任务,将各子任务分配到其他各任务机上,并实时监测子任务的完成进度,当已经完成的子任务数量占所有子任务数量的比值达到设定的比值时,将剩余未完成的每个子任务分解成两个以上的次级子任务,将各次级子任务分配到空闲的任务机上。

同样,为了提高了分布式计算任务的可靠性和成功率,排除第一任务机的剩余任务机中的一个作为第二任务机,用于第一任务机工作异常时代替第一任务机工作,作为第一任务机的备用任务机。

本实施例的第一任务机和第二任务机除了担任分解任务、监视子任务完成进度的工作外,还能给自己分配子任务的运算工作。

实施例二:

如图1所示,本发明所采用的系统包括分布在不同机架上的若干任务机、分布式系统资源管理器、若干客户端机器。下面对各个组成部分进行详细描述:

1、client(客户端)

client是用户提交任务到分布式集群的客户端,采用普通的pc机即可,用户可以通过client向分布式系统发送任务请求。

2、分布式系统资源管理器

分布式系统资源管理器用于整个分布式系统资源的统筹管理,同时为用户提交的任务分配相应的资源。其中,整个分布式系统资源包括cpu、内存、网络、磁盘io等。

3、分布式集群

分布式集群由分散于若干机架上的任务机组成,每台任务机分配出一定的资源供资源管理器调用,并在运行过程中负责具体任务的执行。

下面结合任务执行的具体流程阐述一下发明内容的实现步骤:

分布式系统资源管理器首先接受用户从client发送的任务提交请求,并响应任务请求然后回复给client,同时为任务选择两个不同机架上的任务机分别启动针对该任务的主、备管理模块,然后由主管理模块(activeappmaster)向分布式系统资源管理器申请运行该任务所需的各种资源,主管理模块获取到资源后在具体的任务机上执行各个子任务,并监控各个子任务的工作状态,同时周期性地向分布式系统资源管理器汇报资源使用情况和任务执行进度,一旦主管理模块汇报超时(超时时间可自定义),分布式系统资源管理器立即通知备管理模块(standbyappmaster)切换为主管理模块,同时告知最近一次该任务的资源使用情况以及任务执行进度,然后,新的主管理模块继续监控完成该任务剩下的工作,直至整个任务运行结束。

分布式内存在计算任务时,会将任务分解成若干个子任务,然后分配到各个任务机上执行,在子任务运行过程中,各子任务时刻向主管理模块汇报自己的运行状态,各子任务完成速度快慢不同。若主管理模块监控到子任务的完成比例数达到80%时,自动将未完成的子任务重新拆分成若干次级子任务,重新分配到其他资源空闲的节点,并保持原来子任务继续运行,若原来的子任务完成时间早,则采用原来子任务的结果,否则采用次级子任务运算的结果,从而提高整个任务的执行速度,如图2所示。

本发明在用户向分布式系统提交计算任务时,由分布式系统资源管理器随机选取一台任务机,运行监控该任务具体执行情况的主管理模块,同时优先选取不同机架上的另一台任务机运行备管理模块,主、备管理模块分别与分布式系统资源管理器通信,在主管理模块出现故障时,备管理模块能够快速切换为主管理模块,继续执行未完成的任务,确保及时完成分布式系统计算任务。

本发明在分布式系统执行计算任务时,会将任务分解为若干子任务,然后分配到各任务机上并发执行,并由该任务的主管理模块监控各个子任务的执行情况,当监控到子任务完成数目达到一定比例时,针对剩余未完成的子任务,主管理模块自动将这些未完成的子任务拆分成次级子任务,然后分配到其他资源使用率较低的任务机上执行,同时保持原来的子任务继续运行,以先计算出的结果为准,从而缩短整个任务的执行时间。

综上所述,本发明针对现有分布式系统中任务调度存在的问题,通过在不同机架选取任务机作为主备任务管理器,有效的提高了分布式计算任务的可靠性和成功率,减少了因为任务失败而导致的资源浪费,优化了分布式集群的计算效率;利用集群空闲资源对进度滞后的子任务进行同步计算,提高了任务运行的可靠性,加快了计算任务的运行速度,同时缩短了任务的执行时间,这对于分布式系统处理任务的性能提升具有重要意义。

以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。

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