一种作业调度的方法及装置的制造方法
【技术领域】
[0001]本发明涉及计算机网络技术领域,尤其涉及一种作业调度的方法及装置。
【背景技术】
[0002]现有的大数据或分布式计算系统,其作业调度均使用简单的队列机制,缺乏对于不同作业不同服务等级协议(SLA)的保障。
[0003]目前的大数据或分布式计算的作业调度,一般采用以下几种队列机制:
[0004]1、单队列方式
[0005](I)先进先出的队列:即各种作业按照申请资源的时间顺序无差别地排队,作业调度器按照作业的排队顺序分配资源。
[0006](2)最早完成时间的排队策略:按照各个作业预估的执行时间,对比空闲资源的情况,选取执行时间最短的作业优先执行。
[0007]2、固定多队列方式:
[0008]即分成多个作业队列和多个固定的资源队列,实现不同等级的任务之间互相隔离资源。
[0009]然而,现有的大数据或分布式计算系统作业调度方法,无法满足并发多作业多SLA情况下的调度需求,如:
[0010]1、低优先级作业正在运行时,新来的高优先级作业抢占现有作业的资源运行;
[0011]2、资源争抢发生时,作业最小资源额度得不到保障;
[0012]3、多个资源队列之间,利用率不均衡时的资源浪费。
【发明内容】
[0013]本发明要解决的技术问题是提供一种作业调度的方法及装置,能够解决多种作业实体并发执行的情况下,实现不同作业实体的SLA保障,包括不同优先级作业实体之间和相同优先级作业实体之间的资源分配,并且实现资源共享和有序保障之间的平衡,既能够保障每个作业的服务等级协议,又能够提高整个集群资源的利用率。
[0014]为了解决上述技术问题,本发明采用如下技术方案:
[0015]依据本发明的一个方面,提供了一种作业调度的方法,包括:
[0016]获取作业实体携带的作业实体的优先级信息以及作业实体所需的最小资源数量;
[0017]根据作业实体的优先级信息,将优先级相同的多个作业实体划分入同一作业队列,得到至少一个作业队列;
[0018]若每一个作业队列中的所述作业实体被分配的资源数量小于该作业实体所需的最小资源数量时,获取资源队列中可用的资源,并分配给所述作业实体。
[0019]其中,若每一个作业队列中的所述作业实体被分配的资源数量小于该作业实体所需的最小资源数量时,获取资源队列中可用的资源,并分配给所述作业实体的步骤包括:
[0020]按照所述队列的优先级顺序,为每一个作业队列分配预设数量的资源,其中所述资源为至少一个资源队列中的可用资源;
[0021]将分配给每一个作业队列的资源分配给该作业队列中的作业实体;
[0022]若所述作业实体被分配的资源数量小于该作业实体所需的最小资源数量时,获取其他资源队列中可用的资源,并分配给所述作业实体。
[0023]其中,将分配给每一个作业队列的资源分配给该作业队列中的作业实体的步骤包括:
[0024]扫描所述作业队列中的每一个作业实体,获得未分配资源的作业实体;
[0025]计算所有未分配资源的作业实体所需的最小资源数量之和;
[0026]从分配给该作业队列的资源中,获取所述作业队列对应的可用资源数量;
[0027]比较所述作业实体所需的最小资源数量之和与所述作业队列对应的可用资源数量的大小,得出比较结果;
[0028]根据所述比较结果,为所述作业实体分配资源。
[0029]其中,根据所述比较结果,为所述作业实体分配资源的步骤包括:
[0030]当所需的最小资源数量之和小于所述作业队列对应的可用资源数量时,为所述未分配资源的作业实体分配该作业实体所需的最小资源,并将剩余资源按照作业实体提交的时间顺序分配给所述未分配资源的作业实体。
[0031]其中,根据所述比较结果,为所述作业实体分配资源的步骤包括:
[0032]当所需的最小资源数量大于或等于所述作业队列对应的可用资源数量时,按所述作业实体提交的时间顺序,为所述未分配资源的作业实体分配该作业实体所需的最小资源。
[0033]其中,若所述作业实体被分配的资源数量小于该作业实体所需的最小资源数量时,获取其他资源队列中可用的资源,并分配给所述作业实体的步骤包括:
[0034]获取所述作业实体的最大允许执行时间;
[0035]在所述作业实体的最大允许执行时间内,若所述作业实体被分配的资源数量小于该作业实体所需的最小资源数量时,从可借出资源池中获取其他资源队列可借出的资源,并分配给所述作业实体。
[0036]其中,所述可借出资源池在该可借出资源池中的资源被分配后或者超过所述可借出资源池预设的最大租借时间时,释放该可借出资源池所占用的空间。
[0037]依据本发明的另一个方面,还提供了一种作业调度的装置,包括:
[0038]获取模块,用于获取作业实体携带的作业实体的优先级信息以及作业实体所需的最小资源数量;
[0039]规划模块,根据作业实体的优先级信息,将优先级相同的多个作业实体划分入同一作业队列,得到至少一个作业队列;
[0040]资源分配模块,若每一个作业队列中的所述作业实体被分配的资源数量小于该作业实体所需的最小资源数量时,获取资源队列中可用的资源,并分配给所述作业实体。
[0041]其中,所述资源分配模块包括:
[0042]队列级分配单元,用于按照所述作业队列的优先级顺序,为每一个作业队列分配预设数量的资源,其中所述资源为至少一个资源队列中的可用资源;
[0043]作业级分配单元,用于将分配给每一个作业队列的资源分配给该作业队列中的作业实体;
[0044]资源拆借单元,用于若所述作业实体被分配的资源数量小于该作业实体所需的最小资源数量时,获取其他资源队列中可用的资源,并分配给所述作业实体。
[0045]其中,所述作业级分配单元包括:
[0046]查询子单元,扫描所述作业队列中的每一个作业实体,获得未分配资源的作业实体;
[0047]计算子单元,用于计算所有未分配资源的作业实体所需的最小资源数量之和;
[0048]获取子单元,用于从分配给该作业队列的资源中,获取所述作业队列对应的可用资源数量;
[0049]比较子单元,用于比较所述作业实体所需的最小资源数量之和与所述作业队列对应的可用资源数量的大小,得出比较结果;
[0050]分配子单元,用于根据所述比较结果,为所述作业实体分配资源。
[0051]其中,所述分配子单元进一步用于:
[0052]当所需的最小资源数量之和小于所述作业队列对应的可用资源数量时,为所述未分配资源的作业实体分配该作业实体所需的最小资源,并将剩余资源按照作业实体提交的时间顺序分配给所述未分配资源的作业实体。
[0053]其中,所述分配子单元进一步用于:
[0054]当所需的最小资源数量大于或等于所述作业队列对应的可用资源数量时,按所述作业实体提交的时间顺序,为所述未分配资源的作业实体分配该作业实体所需的最小资源。
[0055]其中,所述资源拆借单元进一步用于:
[0056]获取所述作业实体的最大允许执行时间;
[0057]在所述作业实体的最大允许执行时间内,若所述作业实体被分配的资源数量小于该作业实体所需的最小资源数量时,从可借出资源池中获取其他资源队列可借出的资源,并分配给所述作业实体。
[0058]其中,所述可借出资源池在该可借出资源池中的资源被分配后或者超过所述可借出资源池预设的最大租借时间时,释放该可借出资源池所占用的空间。
[0059]本发明的有益效果是:
[0060]本发明的作业调度的方法,将提交的作业实体依据作业实体携带的优先级信息,将优先级相同的多个作业实体划分入同一作业队列,且若每一个作业队列中的作业实体被分配的资源数量小于该作业实体所需的最小资源数量时,可获取资源队列中可用的资源,并分配给该作业实体。通过队列间和队列内的资源动态共享,及最低额度保障,实现了资源共享和有序保障之间的平衡,既保障了每个作业的SLA,又提高了整个集群资源的利用率。
[0061]进一步地,为每个作业队列按照优先级分配预设数量的资源,进而为每个作业队列中的作业实体分配相应的资源,当存在某个作业实体被分配的资源数量小于该作业实体所需的最小资源数量时,获取资源队列中可用的资源,并分配给该作业实体。先后通过队列级和作业级的资源分配,解决了多种作业并发执行的情况下,实现不同作业的SLA保障,包括不同优先级作业之间、和相同优先级作业之间的资源分配,更加适合现代企业分布式计算和大数据应用的实际情况。
【附图说明】
[0062]图1表示本发明实施例的作业调度的方法流程示意图;
[0063]图2表示本发明实施例的作业调度的装置结构框图;
[0064]图3表示资源分配模块的结构框图;
[0065]图4表示作业级分配单元的结构框图;
[0066]图5表示