发明内容
本发明的目的在于提供一种基于计算的分布式任务管理系统及方法,以解决上述背景技术中提出的问题。
为了解决上述技术问题,本发明提供如下技术方案:
根据本发明的一个方面,提供一种基于计算的分布式任务管理系统,包括任务创建服务器、控制中心、数据库、计算节点和恢复中心;
所述任务创建服务器,与所述控制中心之间相连接,用于接收任务,赋予任务优先级标签priority,传送任务及优先级标签priority给控制中心;
所述控制中心,与所述数据库之间连接,对所述任务创建服务器发送的任务进行调度,通过线性回归模型获取最佳任务分片数量,将任务分片为多个子任务,并发送到所述数据库;
所述数据库,与计所述算节点相连接,融合多个information、tag、IP Address和Execution Information节点数据集,所述information为子任务信息,tag为子任务标签,IP Address为IP地址,Execution Information为子任务执行信息;
所述计算节点,与所述恢复中心相连接,根据从所述数据库接收的information和Execution Information,执行相应的任务;
所述恢复中心,存储任务快照,将任务快照存储到数据库对应节点数据的Execution Information中。
优选地,tag包括priority和Status,tag为子任务标签,priority为优先级标签,Status为状态标签。
优选地,Status包括等待执行、正在执行、成功执行和执行失败,囊括任务执行的全部过程。
优选地,当读取等待执行的子任务信息时,修改其对应节点数据的Status为等待执行;当正在执行的子任务信息执行成功时,修改其对应节点数据的Status为成功执行;当正在执行的子任务信息执行失败时,修改其对应节点数据的Status为执行失败。
可选地,计算节点执行任务基于定时器触发。
优选地,所述计算节点通过读取数据库中的任务快照恢复执行失败的任务信息。
可选地,所述控制中心基于ElasticSearch、Zookeeper和分布式资源管理器Yarn。ElasticSearch用于提供分布式协调管理功能,将任务分片为多个子任务。Zookeeper用于辅助ElasticSearch对leader进行选举。分布式资源管理器Yarn提供资源调度服务,为不同优先级的任务构建不同运行环境,以不同环境起到资源隔离的作用,从而实现资源的合理分配。
根据本发明的另一个方面,提供一种基于计算的分布式任务管理方法,包括以下步骤:
S6-1,对任务进行优先级划分;
S6-2,利用线性回归模型获取最佳任务分片数量;
S6-3,接收多个子任务信息;
S6-4,将所述多个子任务信息information、tag、IP Address和ExecutionInformation为节点数据集;
S6-5,读取节点数据集中的子任务信息;
S6-6,根据接收的子任务信息information和子任务执行信息ExecutionInformation,执行相应的任务;
所述information为子任务信息,tag为子任务标签,IP Address为IP地址,Execution Information为子任务执行信息。
上述线性回归模型为:
其中,y是最佳任务分片数量;w1是正常运行的计算节点数量权值;x1是正常运行的计算节点数量;是任务特征权值矩阵;X2是任务特征矩阵,包括任务大小和类型,对于不同类型的任务赋予不同的正常值,如分类、回归和预测任务分别赋值1、2和3,与权值相乘后才影响到最佳任务分片数量,不同的赋值对结果没有影响;b是偏置;/>表示向下取整。
上述线性回归模型,包括以下步骤:
S8-1:通过网格搜索法,在[1,a]区间内以步长为1执行以往的任务,从而获取任务执行效率最高的[1,a]区间内的最佳任务分片数量,其中a为执行以往的任务时所对应的正常运行的计算节点的数量的3倍;
S8-2:将执行以往的任务时所对应的正常运行的计算节点的数量和以往任务的特征作为输入,以往任务的最佳分片数量作为输出,通过线性回归模型进行训练得到计算节点数量权值、任务特征矩阵权值和偏置;
S8-3:当有新的任务特征和对应的正常运行的计算节点的数量发生变化时,重复步骤S8-1和S8-2来更新计算节点数量权值、任务特征矩阵权值和偏置。
可选地,权值和偏置采用离线训练方式更新,以减轻服务器压力。
优选地,所述tag包括priority和Status,priority为优先级标签,Status为状态标签。
优选地,Status包括等待执行、正在执行、成功执行和执行失败。
优选地,在执行任务的过程中,将任务快照存储到恢复中心,恢复中心将任务快照存储到数据库中,计算节点根据从数据库中获取的任务快照恢复执行失败的任务。
优选地,当读取等待执行的子任务信息时,修改其对应节点数据的Status为等待执行;当正在执行的子任务信息执行成功时,修改其对应节点数据的Status为成功执行;当正在执行的子任务信息执行失败时,修改其对应节点数据的Status为执行失败。
与现有技术相比,本发明所达到的有益效果是:通过线性回归模型获取最佳任务分片数量,将任务分片为多个子任务,information、tag、IP Address和ExecutionInformation融合为节点数据集存放在数据库,计算节点从数据库读取information和Execution Information,并根据读取的Information和Execution Information执行相应的任务,可减轻计算节点的压力,从而提高任务的执行效率;引入优先级,确保高优先级任务优先执行;将任务快照存储到恢复中心,并根据任务快照恢复执行失败的任务,提高任务执行效率。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是本发明基于计算的分布式任务管理系统的结构示意图。所述基于计算的分布式任务管理系统包括任务创建服务器,控制中心,数据库,多个计算节点和恢复中心。控制中心通过线性回归模型获取最佳分片数量,将任务分片为多个子任务,多个information、tag、IP Address和Execution Information融合成节点数据集存储在数据库中。计算节点从数据库读取information和Execution Information,并根据读取的information和Execution Information执行相应的任务。在这个过程中,控制中心监视计算节点上任务的执行情况,并将其发送给数据库,数据库将其记录在节点数据集中。
任务创建服务器与控制中心相连接,用于接收客户端发送的任务,赋予任务优先级标签priority,并将任务及优先级标签priority发送给分布式服务器集群。
控制中心与数据库之间相连接,对任务创建服务器发送的任务进行调度,通过线性回归模型获取最佳任务分片数量,将任务分片为多个子任务信息,发送到所述数据库,同时监视计算节点上的任务执行情况。
数据库与计算节点相连接,融合多个information、tag、IP Address和ExecutionInformation节点数据集,其中,information为子任务信息,tag为子任务标签,IP Address为IP地址,Execution Information为子任务执行信息。
计算节点与恢复中心相连接,根据从数据库接收的information和ExecutionInformation,执行相应的任务。
恢复中心用于存储任务快照,并将任务快照存储到数据库的对应节点数据的Execution Information中。
具体地,将任务分片为子任务,每个服务器需要处理的任务数据减少,例如,对于100万条低优先级任务数据,分片成10个子任务,每个服务器只需要处理10万条任务数据。若优先组服务器中无正在执行的任务,分配优先组服务器的资源处理这些任务数据,否则,仅由普通组服务器处理这些任务数据。将这些数据融合存储为节点数据集,每个节点数据对应一个子任务。以数据队列的形式存放节点数据,遵循先入先出的原则,确保子任务不会被重复执行。
在本发明的一个实施例中,节点数据集保存在一台服务器上,计算节点从节点数据集获取information和Execution Information,可减轻计算节点的压力,有利于提高任务执行效率。如若服务器集群中的服务器配置不一样,则每台服务器可根据自身性能动态获取子任务信息,最大化利用每个服务器的性能。
对于大容量的任务,所述实施例中服务器执行完一个子任务后再执行下一个,有效保护了低性能服务器,并充分发挥高性能服务器的性能。
在本发明的一个实施例中,数据库以数据队列的形式存放information、tag、IPAddress和Execution Information;tag包括priority和Status,priority为优先级标签,Status为状态标签;Status包括等待执行、正在执行、成功执行和执行失败;数据队列遵循先入先出的原则,通过对Status的检索确保任务的执行成功。
在本发明的一个实施例中,在计算节点执行任务的过程中,恢复中心存放任务快照。当某个步骤出现异常时,能够迅速从任务快照中恢复到该步骤,避免重复执行,提高了任务执行效率。
在本发明的一个实施例中,控制中心、数据库、计算节点和恢复中心都应部署集群组件,利用集群组件对服务器集群内部的控制中心、数据库、计算节点和恢复中心进行统一管理。数据库开放read和write权限给计算节点,让每一个计算节点都能够从数据库读取information和Execution Information。控制中心、数据库、计算节点和恢复中心通过集群内部选举产生,以实现不同的功能。
图2是节点数据集的一个示例,任务分片为多个子任务,以节点数据集形式存储,以一个节点数据对应一个子任务,节点数据包括information、tag、IP Address和Execution Information,tag又包括priority和Status。在任务执行过程中,计算节点从数据库获取Status为等待执行的information和Execution Information,information和Execution Information被计算节点获取后,修改其对应节点数据的Status为正在执行,控制中心获取执行该子任务的计算节点的IP地址,记录到数据库中对应节点数据的IPAddress中;如若一个子任务执行失败,修改其对应节点数据的Status为执行失败,并记录该子任务是由哪个计算节点执行的和在哪个步骤执行失败的信息在对应节点数据的Execution Information中;如若一个子任务成功执行,则修改其对应节点数据的Status为成功执行。
控制中心可按照定时或其他固定规律向多个计算节点发送心跳信息来确定控制中心和数据库与计算节点之间的连接情况。控制中心向计算节点发送心跳信息,如若计算节点有心跳,仅仅只是和控制中心的连接断开了,则控制中心向计算节点发出停止执行任务的指令,计算节点根据指令停止执行任务,并把任务快照存放到恢复中心里,控制中心选中Status为执行失败的对应的节点数据,将该节点数据的Status改为等待执行;如若计算节点没有心跳,那么控制中心从恢复中心读取任务执行的状态信息,并将其存入数据库对应的节点数据的Execution Information中,并将对应节点数据的Status改为执行失败,从而使后来的计算节点能够直接从失败的步骤开始。
如若控制中心出现问题,那么可以利用分布式服务器集群的特性,通过选举产生新的控制中心。如果新的控制中心,即之前的计算节点正在执行任务,则把任务快照存放到恢复中心,存放到数据库对应节点数据的Execution Information中,并修改对应节点数据的Status为等待执行。当任务执行结束时,控制中心清空恢复中心保存的信息,方便下次执行任务时不用进行清理。
图3是Zookeeper集群的结构示意图,主要包括以下内容:
领导者leader,负责对任务进行调度和处理,对集群内部服务器进行调度;
跟随者follower,处理客户端任务,与leader之间进行通信,参与leader的选举;
观察者observer,与follower的区别在于不参与leader选举。
当leader产生断线、重启和闪退等异常情况时,Zookeeper集群就会根据ZAB协议进入恢复模式,选举产生新的leader。Zookeeper集群选举产生leader包括以下步骤:
S001,选举阶段,所有follower计算节点一开始都处于选举阶段,当一个follower计算节点获得超过一半的计算节点的票数时,它成为准leader;
S002,发现阶段,所有follower与准leader(之前的follower)间进行通信和同步;
S003,同步阶段,准leader(之前的follower)利用leader之前获取的最新的历史提议,与服务器集群之间进行同步,同步完成之后,准leader(之前的follower)真正成为leader;
S004,广播阶段,只有在这个阶段Zookeeper集群才能正式对外提供服务。
图4是本发明的基于计算的分布式任务管理方法流程图,具体包括以下步骤:
在步骤S6-1中,赋予任务优先级标签;
在步骤S6-2中,通过线性回归模型获取最佳任务分片数量;
在步骤S6-3中,接收多个子任务;
在步骤S6-4中,将多个information、tag、IP Address和Execution Information融合成节点数据集;
在步骤S6-5中,读取节点数据集中的information和Execution Information;
在步骤S6-6中,根据读取的information和Execution Information,执行相应的任务;
上述information为子任务信息,tag为子任务标签,IP Address为IP地址,Execution Information为子任务执行信息。
具体地,tag包括priority和Status,Status包括等待执行、正在执行、成功执行和执行失败;上述priority为优先级标签,Status为状态标签。
具体地,对于上述基于计算的分布式任务管理方法,赋予任务priority,以0为低优先级标签,1为高优先级标签。接收多个子任务信息information,所述子任务信息information来自于数据库,每个子任务信息information融合tag、IP Address和Execution Information形成一个节点数据,以数据队列的形式存储节点数据得到节点数据集,节点数据集存储在数据库中,计算节点从节点数据集获取information和ExecutionInformation,并根据获取的information和Execution Information执行相应的任务。节点数据集设置为先入先出特性,确保任务正确执行且不会重复执行。
所述Status,对于等待执行的子任务,赋予标签0;正在执行的子任务,赋予标签1;成功执行的子任务,赋予标签2;执行失败的子任务;赋予标签-1;初始标签全部为0。
在本发明的一个实施例中,任务分片数量通过如下线性回归方程获取:
其中,大写英文字母代表矩阵,小写英文字母代表数字;y是最佳任务分片数量;w1是正常运行的计算节点数量权值;x1是正常运行的计算节点数量;是任务特征权值矩阵;X2是任务特征矩阵,包括任务大小和任务类型,对于不同类型的任务赋予不同的正常值,如分类、回归和预测任务分别赋值1、2和3,与权值相乘后才影响到最佳任务分片数量,不同的赋值对结果没有影响;b是偏置;/>表示向下取整。上述w1、/>和b通过离线训练获取最优值。
具体地,离线训练包括以下步骤:
在步骤S8-1中,通过网格搜索法,在[1,a]区间内以步长为1执行以往的任务,从而获取任务执行效率最高的[1,a]区间内的最佳任务分片数量,a为执行以往的任务时所对应的正常运行的计算节点的数量的3倍;
在步骤S8-2中,将执行以往的任务时所对应的正常运行的计算节点的数量和以往任务的特征作为输入,以往任务的最佳分片数量作为输出,通过线性回归模型进行训练得到计算节点数量权值、任务特征矩阵权值和偏置;
在步骤S8-3中,当有新的任务特征和对应的正常运行的计算节点的数量发生变化时,重复步骤S8-1和S8-2来更新计算节点数量权值、任务特征矩阵权值和偏置。
采用离线训练的方式,不占用分布式集群的资源,不会影响到任务的执行。
根据图5所示,多个优先组服务器和多个普通组服务器构成服务器集群,集群组件部署在各个服务器集群上,集群组件对服务器集群中的服务器进行协调性和一致性管理。当客户端向服务器集群发送高优先级任务时,集群内部决定哪台或哪些优先组服务器处理客户端任务;当客户端向服务器集群发送低优先级任务时,若优先组服务器无正在执行的任务,优先组服务器也参与执行任务,否则,仅由普通组服务器执行任务。集群组件包括ElasticSearch、Zookeeper和分布式资源管理器Yarn。
所述ElasticSearch用于提供分布式协调管理功能,将任务分片为多个子任务。
所述Zookeeper用于辅助ElasticSearch对leader进行选举。
所述分布式资源管理器Yarn提供资源调度服务,为不同优先级的任务构建不同运行环境,以不同环境起到资源隔离的作用,从而实现资源的合理分配。
所述分布式资源管理器Yarn,用于将服务器集群分为两组,一组为优先组,一组为普通组。当接收到priority为高优先级的任务时,分配到优先组执行,当优先组中无高优先级任务执行时,暂时分配优先组资源给普通组执行任务。一旦优先组中有高优先级任务,回收分配给普通组的资源执行高优先级任务。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。