一种多时序任务调度方法和系统技术方案

技术编号:11766439 阅读:194 留言:0更新日期:2015-07-23 18:20
本发明专利技术涉及一种任务调度方法和系统,特别涉及一种多时序任务调度方法和系统。包括以下步骤:采集节点信息,并根据节点信息设定每个节点的运算能力;采集任务信息,并根据任务信息设定每个任务的网格数;根据运算能力大小,将所有节点进行排序;根据任务的网格数多少,将所有任务进行排序;根据每个节点的负载状态,采用贪心算法,按照运算能力强的节点处理网格数大的任务的方式,将任务分配给各个节点。本发明专利技术考虑了当前平台上的资源分配及平台内各节点的负载能力和状态,在任务调度时会将计算量大的任务分配在计算能力强的节点上,能够有效避免饥饿状态和系统资源利用率低的问题,提高了整体的运算效率,优化了运算时间。

【技术实现步骤摘要】

本专利技术涉及一种任务调度方法和系统,特别涉及一种多时序任务调度方法和系 统。
技术介绍
在研宄长时间序列下空间数据场的处理问题时,尤其是在节点计算能力不对称的 情况下,Spark任务调度模式非常有利于提高数据处理效率。Spark中一共包括了两种任务 调度算法,一种就是FIFO(先进先出)算法,另一种是Fair(公平调度)算法。FIFO算法是 Spark框架下的默认调度算法,该算法的最大特点就是可用性好,原理简单易懂,适应性强。 它是专门为单用户的单一类型数据处理作业而设计的一套算法。FIFO的不足之处是先入先 出这种类似于排队的方式较为简单,如果排在前面的job的计算量较小,而队列后面的job 计算量大时,大计算量的job得不到足够的资源,而处于饥饿的状态,这样极容易造成资源 分配的不公平。同时,FIFO是针对单用户的大型批处理作业实现的,如果多用户共同使用 这一平台去运行不同种类的作业,由于FIFO对用户不同类型作业需求差异的忽略,则很可 能引起因平台整体性能和系统资源利用率低导致的作业执行问题。Fair算法实现了在每个 应用程序中,允许多线程同时提交作业,并通过一种等级公平调用器来实现多个作业对集 群资源的共享。Fair算法的核心目标是使需求不同的用户在获得资源的机会上是平等的。 Fair算法的缺点是没有考虑当前节点的负载水平及其负载状态,这样很可能导致节点实际 负载不均衡。如果计算任务的复杂度不同,在公平调度算法下极易造成各个计算节点负载 不均衡,影响整体的计算效率。
技术实现思路
本专利技术所要解决的技术问题是提供一种多时序任务调度方法和系统,解决了现有 技术中FIFO算法或Fair算法分配资源不均从而影响整体计算效率的技术问题。 本专利技术解决上述技术问题的技术方案如下:一种多时序任务调度方法,包括以下 步骤: 步骤1,采集节点信息,并根据节点信息设定每个节点的运算能力; 步骤2,采集任务信息,并根据任务信息设定每个任务的网格数; 步骤3,根据运算能力大小,将所有节点进行排序; 步骤4,根据任务的网格数多少,将所有任务进行排序; 步骤5,根据每个节点的负载状态,采用贪心算法,按照运算能力强的节点处理网 格数大的任务的方式,将任务分配给各个节点。 在上述技术方案的基础上,本专利技术还可以做如下改进。 进一步的,步骤3中,将节点按照运算能力从高到低的顺序进行排序;步骤4中,将 任务按照网格数从高到低的顺序进行排序。 进一步的,所述节点为计算机,根据计算机的CPU参数和/或GPU来设定节点的运 算能力。 进一步的,步骤5具体为: 步骤501,判断节点个数和任务个数的关系,若节点个数不小于任务个数,则按照 运算能力强的节点处理网格数大的任务的方式,将节点和任务一一对应进行计算; 步骤502,若节点个数小于任务个数,则先求取所有任务网格数多少之和与所有节 点运算能力之和的比值A,【主权项】1. 一种多时序任务调度方法,包括w下步骤: 步骤1,采集节点信息,并根据节点信息设定每个节点的运算能力; 步骤2,采集任务信息,并根据任务信息设定每个任务的网格数; 步骤3,根据运算能力大小,将所有节点进行排序; 步骤4,根据任务的网格数多少,将所有任务进行排序; 步骤5,根据每个节点的负载状态,采用贪屯、算法,按照运算能力强的节点处理网格数 大的任务的方式,将任务分配给各个节点。2. 根据权利要求1所述的多时序任务调度方法,其特征在于:步骤3中,将节点按照运 算能力从高到低的顺序进行排序;步骤4中,将任务按照网格数从高到低的顺序进行排序。3. 根据权利要求1所述的多时序任务调度方法,其特征在于:所述节点为计算机,根据 计算机的CPU参数和/或GPU来设定节点的运算能力。4. 根据权利要求1~3任一所述的多时序任务调度方法,其特征在于:步骤5具体为: 步骤501,判断节点个数和任务个数的关系,若节点个数不小于任务个数,则按照运算 能力强的节点处理网格数大的任务的方式,将节点和任务一一对应进行计算; 步骤502,若节点个数小于任务个数,则先求取所有任务网格数多少之和与所有节点运 算能力之和的比值A,其中bi、b2、bi、bm分别表示第1个、第2个、第i个、第m个任务的网格数多少,且b1、b2、……bm的数值大小依次减小;a1、32、ai、a。表示第1个、第2个、第i个、第n个节点的 运算能力值,且31、32、……a。的数值大小依次减小; 步骤503,判断是否将任务bi分配到节点ai;采集节点a1的当前任务值tmpl,计算当前 任务值大小与该节点计算能力的比值B,判断|C-A|和|B-A|的大小,若|C-A|《|B-A|,则将任务bi分配到节点ai,并进入步 骤504 ;若IC-AI〉IB-AI,则重复步骤503,依次判断是否将任务bi分配到节点a2、a3……a。, 直至将任务bi分配出去,然后进入步骤504 ; 步骤504,按照任务大小从两边向中间的顺序,即按照bi、bm、b2、bm_i、bg、bm_2......的顺序, 重复步骤503和504,直至所有任务全部分配出去。5. 根据权利要求4所述的多时序任务调度方法,其特征在于:还包括步骤6,步骤6具 体为;判断任务是否已经全部分配完成,若分配完成,则输出分配结果;若没有分配完成, 则将已分配的节点和任务加入优先队列,从优先队列中每次取出一个当前任务值和节点运 算能力比值最小的节点进行任务的二次分配,重复步骤5,直到将所有的任务和节点都加入 优先队列之中,并输出分配结果。6. -种多时序任务调度系统,其特征在于;包括节点运算能力设定模块、任务网格数 设定模块、节点排序模块、任务排序模块和任务分配模块, 所述节点运算能力设定模块用于采集节点信息,并根据节点信息设定每个节点的运算 能力; 所述任务网格数设定模块用于采集任务信息,并根据任务信息设定每个任务的网格 数; 所述节点排序模块用于根据运算能力大小,将所有节点进行排序; 所述任务排序模块用于根据任务的网格数多少,将所有任务进行排序; 所述任务分配模块用于根据每个节点的负载状态,采用贪屯、算法,按照运算能力强的 节点处理网格数大的任务的方式,将任务分配给各个节点。7. 根据权利要求6所述的多时序任务调度系统,其特征在于:所述任务分配模块包括 第一判断单元、计算单元、第二判断单元、分配单元和输出单元, 所述第一判断单元用于判断节点个数和任务个数的关系,并输出第一判断结果至分配 单元; 所述计算单元用于计算所述A值、B值和C值,并将计算结果发送到所述第二判断单 元;其中bi、b2、bi、bm分别表示第1个、第2个、第i个、第m个任务的网格数多少,且b1、 b2、......bm的数值大小依次减小;a1、32、a;、a。表示第1个、第2个、第i个、第n个节点的 运算能力值,且31、a,、……a。的数值大小依次减小;所述tmpl为节点对应的当前任务值; 所述第二判断单元用于接收所述A值、B值和C值,比较|C-A|和|B-A|的大小关系, 并输出第二判断结果至分配单元; 所述分配单元用于接收所述第一判断结果和/或第二判断结果,并根据所述第一判断 结果和/或第二判断结果,将本文档来自技高网...

【技术保护点】
一种多时序任务调度方法,包括以下步骤:步骤1,采集节点信息,并根据节点信息设定每个节点的运算能力;步骤2,采集任务信息,并根据任务信息设定每个任务的网格数;步骤3,根据运算能力大小,将所有节点进行排序;步骤4,根据任务的网格数多少,将所有任务进行排序;步骤5,根据每个节点的负载状态,采用贪心算法,按照运算能力强的节点处理网格数大的任务的方式,将任务分配给各个节点。

【技术特征摘要】

【专利技术属性】
技术研发人员:秦勃景辉刘健健夏海涛朱勇韩卫灵
申请(专利权)人:中国海洋大学
类型:发明
国别省市:山东;37

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

1