一种基于用户作业流程的分布式集群资源调度方法

文档序号:26003834发布日期:2021-07-23 21:21阅读:114来源:国知局
一种基于用户作业流程的分布式集群资源调度方法

本发明涉及分布式计算领域,尤其涉及一种基于用户作业流程的分布式集群资源调度方法。



背景技术:

超算中心、云服务提供商等越来越注重提高自身的服务质量(qos,qualityofservice),按时完成用户提交的作业是高质量服务的基本保证。因此在为用户提供服务前,预测用户作业的执行时间非常有必要。如果预测出的作业完成时间不能满足用户的需求,则超算中心等应该告知用户,方便用户决定是否仍旧提交作业。

为了预测作业的运行时间,常用方法是先运行作业的一部分,再按照作业数量的比例计算得到用户作业执行时间的预测值。由于作业执行时间与作业量之间并非线性关系,这样得到的预测结果准确性偏低。

大规模科学计算等用户作业包含内在的作业流程,即作业可以划分为多个子作业,各子作业间由于存在数据依赖关系而具有执行顺序的约束。如何根据子作业的执行顺序约束和集群的实时资源进行资源调度,从而提高子作业执行并行度、缩短用户作业执行时间是一个值得研究的问题。

常用的对于包含内在流程的用户作业的资源调度算法是静态的,没有充分考虑分布式集群的实时资源状态和子作业之间的执行顺序关系,无法最大限度地发挥集群的性能。



技术实现要素:

本发明为克服上述的不足之处,目的在于提供一种基于用户作业流程的分布式集群资源调度方法。本发明首先根据子作业间的执行顺序约束关系,为子作业进行资源的逻辑分配并预测在此资源配置下各子作业的执行时间,进而通过计算作业流程中的关键路径预测出作业的执行时间。预测的作业完成时间可以作为能否为用户提供服务的依据。

本发明是通过以下技术方案达到上述目的:一种基于用户作业流程的分布式集群资源调度方法,包括如下步骤:

(1)对用户作业进行分析,生成并行应用有向无环图pad(parallelapplicationdirectedacyclicgraph),确定各子作业的执行顺序约束;

(2)通过正向和逆向的广度优先搜索,得到两组子作业的串并行执行关系;

(3)根据正向和逆向的子作业串并行执行关系,分别为子作业进行逻辑资源分配,得到资源分配方案1(对应正向搜索得到的子作业串并行执行关系)和资源分配方案2(对应逆向搜索得到的子作业串并行执行关系);

(4)分别在资源分配方案1和资源分配方案2下预测各子作业的执行时间;

(5)分别计算出资源分配方案1和资源分配方案2下pad中的关键路径。执行时间较短的关键路径即为完成作业的关键路径,其对应的各子作业完成时间之和为预测的用户作业执行时间;

(6)若作业预测执行时间满足用户要求,按照资源分配方案为作业分配集群资源并运行作业;否则告知用户,请用户选择是否继续提交作业。

作为优选,所述步骤(1)具体如下:

为了处理含有内部数据依赖关系的用户作业,建立了并行应用有向无环图pad模型。图中的节点ai表示事件子作业i完成,节点a0是定义的一个空作业节点,表示整个用户作业的开始事件,它没有前趋。图中的最后一个节点表示最后一个子作业的完成事件,它没有后继节点。pad中的有向边<ai,aj>表示子作业i是子作业j的前趋作业,仅当子作业i执行结束,子作业j才可以开始运行。有向边上的权值表示子作业j的执行时间,此时间由作业运行时间预测模型预测得到。

作为优选,所述步骤(2)具体如下:

(2.1)将pad中节点a0作为起始点,运行广度优先搜索算法,确定每一个子作业i所在的层次,即从a0到节点ai的路径的长度。层次相同的子作业之间没有数据依赖关系,可以并行执行。

(2.2)根据各子作业的层次关系,得到正向的子作业串并行执行关系。

(2.3)将pad中最后一个节点作为起始点,运行广度优先搜索算法,确定每一个子作业i所在的层次。层次相同的子作业之间没有数据依赖关系,可以并行执行。

(2.4)根据各子作业的层次关系,得到逆向的子作业串并行执行关系。

作为优选,所述步骤(3)具体如下:

(3.1)确定集群中实时的资源量,包括cpu核数、内存容量和磁盘容量等。

(3.2)根据正向搜索得到的子作业串并行执行关系,执行步骤(3.3)到步骤(3.6)。

(3.3)判断是否每一个子作业都已经分配了集群资源,若是,得到资源分配方案1,转至执行步骤(3.7);否则执行(3.4)。

(3.4)处理子作业,计算出与此子作业层次相同的子作业的个数,即层次的宽度w。

(3.5)根据同一层次各子作业的数据量大小和作业类型,将集群资源逻辑分配给这w个处于同一层次的子作业。

(3.6)执行步骤(3.3)。

(3.7)根据逆向搜索得到的子作业串并行执行关系,执行步骤(3.8)至步骤(3.11)。

(3.8)判断是否每一个子作业都已经分配了集群资源,若是,得到资源分配方案2,继续执行步骤(4);否则执行(3.9)。

(3.9)处理子作业,计算出与此子作业层次相同的子作业的个数,即层次的宽度w。

(3.10)根据同一层次各子作业的数据量大小和作业类型,将集群资源逻辑分配给这w个处于同一层次的子作业。

(3.11)执行步骤(3.8)。

作为优选,所述步骤(4)具体为:

(4.1)收集各种用户作业在集群不同的资源配置(包括cpu核数、内存容量、磁盘容量等)和作业参数(如作业的数据量等)下的运行时间数据,并对收集的数据进行预处理。

(4.2)使用预处理后的数据训练梯度提升决策树gbdt(gradientboostdecisiontree)以生成作业运行时间预测模型gtpm(gbdtbasedtimepredictionmodel)。

(4.3)将各子作业的资源配置和作业参数作为gtpm的输入,利用模型预测得到子作业执行时间。

作为优选,所述步骤(5)具体如下:

(5.1)使用关键路径计算算法,根据正向子作业串并行执行关系下每个子作业的预测执行时间,寻找出关键路径。关键路径上每个子作业的预测执行时间之和为用户作业在资源分配方案1下的执行时间t1。

(5.2)使用关键路径计算算法,根据逆向子作业串并行执行关系下每个子作业的预测执行时间,寻找出关键路径。关键路径上每个子作业的预测执行时间之和为用户作业在资源分配方案2下的执行时间t2。

(5.3)比较t1和t2,取时间较小值作为用户作业预测执行时间。

本发明的有益效果在于:本发明使用并行应用有向无环图对包含有数据依赖关系子作业的用户作业进行表示,进而使用广度优先搜索算法得到各个子作业间的串并行执行顺序。根据子作业的串并行关系进行集群资源的逻辑分配,预测出每个子作业的执行时间。再进一步计算出子作业执行的关键路径,从而完成用户作业执行时间的预测。提出的算法能够提高子作业执行的并行度,并且提升集群的服务质量。

附图说明

图1是本发明实施例使用场景说明;

图2是本发明的方法流程示意图;

图3是本发明的并行应用有向无环图pad的示例图;

图4是本发明的正向和逆向搜索得到的子作业层次和串并行执行关系示例;

图5是本发明的作业运行时间预测模型使用流程图;

图6是使用本发明的两种资源分配方案及spark默认调度算法的作业完成时间对比图。

具体实施方式

下面结合具体实施例对本发明进行进一步描述,但本发明的保护范围并不仅限于此:

实施例:本实施例的应用场景如图1所示。用户向云服务提供商提交作业申请,并给出了完成作业的截止时间。为了保证服务质量,云服务提供商需要根据当前集群系统的资源情况预测作业的完成时间。当确认可以在用户规定的时间内完成作业时,云服务提供商使用最优化的资源配置进行用户作业的执行。

本实施例中,用户向云服务提供商提交的作业为学生学业分析评价,要求10小时内完成。这个作业可以分解为6个子作业,它们之间的相互关系如表1所示,各个子作业间有数据依赖关系。只有当前趋作业完成后,后继作业才能开始执行。

表1“学生学业分析评价”作业的内在流程

云服务提供商的集群现有节点信息如表2所示。

表2集群可用资源信息

本实施例完成云服务提供商对于学生学业分析评价这一用户作业的完成时间预测及作业在最优资源配置下的执行。目前的资源调度方法没有充分考虑分布式集群的实时资源状态和用户作业的各个子作业的执行顺序关系,本发明通过构建并行应用有向无环图,确定子作业的串并行执行关系,再根据子作业运行时间预测,预测出用户作业的执行时间。本发明能够提升子作业运行的并行度、缩短用户作业执行时间,同时提高云服务提供商的服务质量。

如图2所示,一种云用户作业执行时间预测方法,包括如下步骤:

(1)根据学生学业分析评价作业的内在子作业流程,生成并行应用有向无环图pad,确定各子作业的执行顺序约束。

为了处理学生学业分析评价这个用户作业,建立了并行应用有向无环图pad模型,图3给出了此作业的pad示意图。图中的节点ai表示事件子作业i完成,如a1表示作业“学生学业数据预处理”执行完成。为了方便后续的处理,定义了节点a0表示一个空作业0的完成事件,它是整个用户作业的开始事件。空作业的执行时间为0,不会影响第一个子作业“学生学业数据预处理”的开始执行时间。图3中的最后一个节点a6表示最后一个子作业的完成事件,它没有后继节点。此例中作业6进行学生学业情况分析,最终给出学生学业等级,完成作业6后,整个学生学业分析评价作业也就完成了。pad中的有向边<ai,aj>表示子作业i是子作业j的前趋作业,仅当子作业i执行结束,子作业j才可以开始运行。有向边上的权值表示子作业j的执行时间,此时间由作业运行时间预测模型预测得到。如<a1,a3>表示子作业1是子作业3的前趋作业,仅当子作业1执行结束,产生子作业3需要的数据,子作业3才可以开始运行。

(2)通过正向和逆向的广度优先搜索,得到两组子作业的串并行执行关系。图4给出了使用正序和逆序搜索算法,分别对学生学业分析评价作业的pad进行搜索得到的两组子作业的层次和串并行执行关系。

(2.1)将pad中节点a0作为起始点,运行广度优先搜索算法,确定每一个子作业i所在的层次,即从a0到节点ai的路径的长度。层次相同的子作业之间没有数据依赖关系,可以并行执行。本实施例中,a0的层次为0,a1是a0的后继,则a1的层次为1。a1有3个直接后继a2,a3和a4,则它们的层次都为2。依次类推就可以得到每个子作业所在的层次。

(2.2)根据各子作业的层次,得到正向的子作业串并行执行关系。只有当一个子作业的前趋作业都运行结束,该子作业才能够开始执行。本实施例中,先执行子作业1进行学生学业数据预处理;在它运行结束后,并行执行子作业a2“根据课程考试成绩计算绩点”,a3“计算学生课外科技竞赛加分”和a4“计算学生参加志愿者等活动加分”;之后执行a5“学生学习成绩汇总”,当它完成后,执行最后一个子作业a6,即根据课程考试成绩计算绩点。

(2.3)将pad中最后一个节点a6作为起始点,运行广度优先搜索算法,确定每一个子作业i所在的层次。层次相同的子作业之间没有数据依赖关系,可以并行执行。本实施例中,a6的层次为0,a4和a5是a6的直接前趋,它们的层次为1,由于这两个作业没有数据依赖关系,因此它们可以并行执行。a5有两个直接前趋作业a2,a3,则它们的层次都为2,可以并行执行。a1是a2,a3和a4的前趋,所以它的层次为3。

(2.4)根据各子作业的层次关系,得到逆向的子作业串并行执行关系。本实施例中,先执行子作业1,进行学生学业数据预处理;在它运行结束后,并行执行子作业a2和a3,分别计算学生课程绩点和科技竞赛加分;之后并行执行a4和a5,进行志愿者活动的加分计算和学生学习成绩的汇总。当这些子作业都完成后,就可以执行最后一个子作业a6,完成对学生的学业评价。

(3)根据正向和逆向的子作业串并行执行关系,分别为学生学业分析评价作业的各个子作业进行逻辑资源分配,得到资源分配方案1(对应正向的子作业串并行执行关系,如表3所示)和资源分配方案2(对应逆向的子作业串并行执行关系,如表4所示)。

(3.1)确定云服务提供商的集群实时资源量,包括cpu核数、内存容量和磁盘容量等。表2给出了集群当前可用的资源情况。

(3.2)根据正向搜索得到的学生学业分析评价作业中子作业的串并行执行关系,执行步骤(3.3)到步骤(3.6)。

(3.3)判断是否每一个子作业都已经分配了集群资源,若是,得到学生学业分析评价作业的资源分配方案1,转至执行步骤(3.7);否则执行(3.4)。

(3.4)处理子作业,计算出与此子作业层次相同的子作业的个数,即层次的宽度w。

(3.5)根据同一层次各子作业的数据量大小和作业类型,将集群资源逻辑分配给这w个处于同一层次的子作业。

(3.6)执行步骤(3.3)。

表3学生学业分析评价作业的资源分配方案1

(3.7)根据逆向搜索得到的学生学业分析评价作业的各个子作业串并行执行关系,执行步骤(3.8)至步骤(3.11)。

(3.8)判断是否每一个子作业都已经分配了集群资源,若是,得到学生学业分析评价作业的资源分配方案2,继续执行步骤(4);否则执行(3.9)。

(3.9)处理子作业,计算出与此子作业层次相同的子作业的个数,即层次的宽度w。

(3.10)根据同一层次各子作业的数据量大小和作业类型,将集群资源逻辑分配给这w个处于同一层次的子作业。

(3.11)执行步骤(3.8)。

表4学生学业分析评价作业的资源分配方案2

(4)分别在资源分配方案1和资源分配方案2下预测各子作业的执行时间。使用图5所示的流程预测“学生学业分析评价”作业的运行时间。

(4.1)收集不同用户作业在云服务集群的各种资源配置(包括cpu核数、内存容量、硬盘容量等)和作业参数(如作业的数据量等)条件下的运行时间数据,并对收集的数据进行预处理。

(4.2)使用预处理后的数据训练梯度提升决策树gbdt以生成作业运行时间预测模型gtpm。

(4.3)按照表3和表4给出的学生学业分析评价作业的资源分配方案,将各子作业的资源配置和作业参数输入到作业时间预测模型gtpm,得到各子作业的预测执行时间。本实施例中,在资源分配方案1下,各子作业的预测运行时间见表3;在资源分配方案2下,各子作业的预测运行时间见表4。

(5)在资源分配方案1和资源分配方案2下,分别计算出学生学业分析评价作业对应的pad中的关键路径。执行时间较短的关键路径即为完成作业的关键路径,其对应的各子作业完成时间之和为预测的用户作业执行时间。

(5.1)获取学生学业分析评价作业在资源分配方案1下每个子作业的预测运行时间,使用关键路径计算算法,寻找出pad的关键路径。本例中,关键路径有两条,分别为a0→a1→a2→a5→a6和a0→a1→a3→a5→a6,它们的长度一样,都为524分钟。则在资源分配方案1下,完成学生学业分析评价作业的时间t1为524分钟。

(5.2)获取学生学业分析评价作业在资源分配方案2下每个子作业的预测运行时间,使用关键路径计算算法,寻找出pad的关键路径。本例中,关键路径有两条,分别为a0→a1→a2→a5→a6和a0→a1→a3→a5→a6,它们的长度一样,都为503分钟。则在资源分配方案2下,完成学生学业分析评价作业的时间t2为503分钟。

(5.3)比较t1和t2,可得到在云服务提供商当前的集群状态下,学生学业分析评价作业预测的执行时间为503分钟。

(6)用户要求学生学业分析评价作业在10小时内完成。根据预测,云服务集群能够用503分钟(8.38小时)完成作业的执行,因此可以接受用户的作业申请。集群按资源分配方案2的配置,为学生学业分析评价作业的各个子作业分配资源,开始作业执行。

其中上述方法是基于图2的流程实施的,本发明方法与spark集群默认调度算法的实验结果对比如图6所示。

综上所述,本发明在建立并行应用有向无环图的基础上,使用广度优先搜索算法从正向和逆向分别搜索出学生学业分析评价作业中各个子作业的串并行执行顺序。进一步使用gbdt算法对子作业的执行时间进行了预测,在此基础上通过计算关键路径得到学生学业分析评价作业的执行时间。实验表明,本发明提出的算法对于作业运行时间预测准确度高。在资源分配方案1下,算法预测学生学业分析评价作业的执行时间为524分钟,作业实际完成时间为543.74分钟,平均绝对值百分比误差(mape,meanabsolutepercentageerror)为3.63%。在资源分配方案2下,算法预测学生学业分析评价作业的执行时间为503分钟,作业实际完成时间为518.82分钟,平均绝对值百分比误差仅为3.05%。与spark默认的资源分配算法相比,使用spark默认算法执行学生学业分析评价作业的时间为623.63分钟,本发明算法运行此作业的时间为518.82分钟,缩短了16.81%。因此本发明提出的算法能够有效提高子作业执行的并行度、缩短用户作业的执行时间,提高云服务提供商的服务质量。

以上的所述乃是本发明的具体实施例及所运用的技术原理,若依本发明的构想所作的改变,其所产生的功能作用仍未超出说明书及附图所涵盖的精神时,仍应属本发明的保护范围。

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