计算集群中多用户的任务调度方法及设备与流程

文档序号:12034434阅读:481来源:国知局
计算集群中多用户的任务调度方法及设备与流程

本申请涉及计算机领域,尤其涉及一种计算集群中多用户的任务调度方法及设备。



背景技术:

大数据技术依托于海量的数据,而这样新型的数据处理任务是单台计算机不能胜任的,需要采用分布式的计算集群(计算引擎)。分布式计算引擎是将大型的处理任务,在若干中间处理阶段,分割成类型相同的小任务,然后分发到不同的分布式节点进行计算。如何将接收到的任务分发出去,便是引擎调度模块(调度器)负责的。

分布式计算平台上,往往很多用户如多租户使用同一个计算集群,并且使用集群运行不同类型的运算任务(混合负载)。在这样的场景中,如何合理、高效地分配资源,是计算任务顺利完成的关键,而其核心技术在于计算集群(计算引擎)的调度功能。而现有的调度器调度方案无法可靠保证多用户和混合负载场景下的计算引擎对任务的执行效率,同时影响了用户的使用体验。



技术实现要素:

本申请的一个目的是提供一种计算集群中多用户的任务调度方法及设备,能够解决现有的调度器调度方案无法可靠保证多用户和混合负载场景下的计算引擎对任务的执行效率的问题。

根据本申请的一个方面,提供了一种计算集群中多用户的任务调度方法,该方法包括:

根据计算集群中所有服务器的当前占用总资源量,确定所述计算集群中各服务器的当前的剩余总资源量配额;

根据所述计算集群中各服务器上各用户当前运行的任务数量,确定各用户当前的剩余任务数量配额;

从新接收的任务中筛选出数量小于或等于各用户当前的剩余任务数量配额的任务,其中,所述筛选出的所有任务的需求总资源量小于或等于所述当前的剩余总资源量配额;

获取所述筛选出的任务的任务类型,按任务类型对所述筛选出的任务进行任务优先级排序;

按所属的用户将所述任务优先级排序后的任务分配到资源池中对应的用户的节点上,所述资源池中的节点对应于所述计算集群中的服务器;

根据每个节点上的分配的任务的需求资源量和每个节点上的资源指标对所有节点进行节点优先级排序;

按所述节点优先级排序调度对应的服务器执行所述节点上分配的任务,其中,同一节点上的任务按所述任务优先级调度;

更新计算集群中对应服务器的当前占用总资源量和各用户当前运行的任务数。

进一步的,上述方法中,每个节点上的资源指标包括:cpu资源量、内存资源量、权重、保留资源量和最大资源量。

进一步的,上述方法中,根据每个节点上的分配的任务的需求资源量和每个节点上的资源指标对所有节点进行节点优先级排序,包括:

若某个节点上的分配的任务的需求资源量小于该节点上的保留资源量,则将该节点的节点优先级设置得较高;

若某个节点上的分配的任务的需求资源量超过该节点上的保留资源量且小于该节点的最大资源量,则按该节点的权重设置该节点的节点优先级高低。

进一步的,上述方法中,所述资源池中的节点组成树形结构,其中,节点之间满足以下约束:

子节点只使用父节点的最大资源量;

同级兄弟节点使用的资源量总和不超过父节点最大资源量;

同级兄弟节点相互借用超过同级兄弟节点的最大资源量的父节点的最大资源量的剩余资源量。

进一步的,上述方法中,当所述资源池中的节点组成树形结构时,按所属的用户将所述任务优先级排序后的任务分配到资源池中对应的用户的节点上,包括:

按所属的用户将所述任务优先级排序后的任务分配到资源池中对应的用户的叶子节点上。

进一步的,上述方法中,按所属的用户将所述任务优先级排序后的任务分配到资源池中对应的用户的叶子节点上,包括:

根据同一用户下的每个叶子节点的当前占用资源量额和/或当前任务数量,将同一用户的任务均衡分配到同一用户下各个叶子节点上。

进一步的,上述方法中,当所述资源池中的节点组成树形结构时,根据每个节点上的分配的任务的需求资源量和每个节点上的资源指标对所有节点进行节点优先级排序,包括:

对树形结构中的叶子节点的父节点即树形结构的倒数第二层节点进行优先级排序,其中,根据所有叶子节点的上层节点上分配的任务的需求资源量和资源指标对倒数第二层节点进行优先级排序,树形结构中除叶子节点外的每一上层节点上分配的任务的需求资源量为其下层节点上的分配的任务的需求资源量之和;

根据叶子节点上分配的任务的需求资源量和资源指标分别对每个倒数第二层节点下的叶子节点进行优先级排序;

根据所述倒数第二层节点和叶子节点的优先级排序,得到所有叶子节点的优先级排序。

进一步的,上述方法中,根据每个节点上的分配的任务的需求资源量和每个节点上的资源指标对所有节点进行节点优先级排序,包括:

根据每个节点上的分配的任务的需求资源量和每个节点上的资源指标对所有节点进行节点优先级一次排序;

在所述节点优先级一次排序的基础上,按照用户的等级对所有节点进行节点优先级二次排序,在同一节点内的任务,保持所述任务优先级的排序结果。

进一步的,上述方法中,根据每个节点上的分配的任务的需求资源量和每个节点上的资源指标对所有节点进行节点优先级排序,包括:

对树形结构中的叶子节点的父节点即树形结构的倒数第二层节点进行优先级排序,其中,根据所有叶子节点的上层节点上分配的任务的需求资源量和资源指标对倒数第二层节点进行优先级排序,其中,树形结构中除叶子节点外的每一上层节点上分配的任务的需求资源量为其下层节点上的分配的任务的需求资源量之和;

根据叶子节点上分配的任务的需求资源量和资源指标分别对每个倒数第二层节点下的叶子节点进行优先级排序;

根据所述倒数第二层节点和叶子节点的优先级排序,得到所有叶子节点的优先级一次排序;

在所有叶子节点的优先级一次排序的基础上,按照叶子节点所属的用户的等级进行所有叶子节点的优先级二次排序,在同一叶子节点内的任务,保持所述任务优先级的排序结果。

进一步的,上述方法中,,按所属的用户将所述任务优先级排序后的任务分配到资源池中对应的用户的节点上的步骤中,

不同的用户之间共享被分配到的节点上的一部分或全部资源。

进一步的,上述方法中,获取所述筛选出的任务的任务类型中,所述任务类型包括:

用户身份和任务类型信息,其中,用户身份信息包括用户的角色和/或分组、服务保证等级、用户使用的服务器地址。

进一步的,上述方法中,按任务类型对所述筛选出的任务进行任务优先级排序,包括:

按任务类型、计算集群中的服务器的当前运行状态和历史运行状态、服务器上运行的任务的当前运行状态和历史运行状态,对所述筛选出的任务进行任务优先级排序。

根据本申请的另一方面,还提供了一种计算集群中多用户的任务调度设备,该设备包括:

集群负载感知模块,用于根据计算集群中所有服务器的当前占用总资源量,确定所述计算集群中各服务器的当前的剩余总资源量配额;及根据所述计算集群中各服务器上各用户当前运行的任务数量,确定各用户当前的剩余任务数量配额;

策略应用模块,用于从新接收的任务中筛选出数量小于或等于各用户当前的剩余任务数量配额的任务,其中,所述筛选出的所有任务的需求总资源量小于或等于所述当前的剩余总资源量配额,按所属的用户将由所述任务类型感知模块任务优先级排序后的任务分配到资源池中对应的用户的节点上,所述资源池中的节点对应于所述计算集群中的服务器;根据每个节点上的分配的任务的需求资源量和每个节点上的资源指标对所有节点进行节点优先级排序;按所述节点优先级排序调度对应的服务器执行所述节点上分配的任务,其中,同一节点上的任务按所述任务优先级调度;通知所述集群负载感知模块更新计算集群中对应服务器的当前占用总资源量和各用户当前运行的任务数;

任务类型感知模块,用于获取所述筛选出的任务的任务类型,按任务类型对所述筛选出的任务进行任务优先级排序;

进一步的,上述设备中,每个节点上的资源指标包括:cpu资源量、内存资源量、权重、保留资源量和最大资源量。

进一步的,上述设备中,所述策略应用模块,用于若某个节点上的分配的任务的需求资源量小于该节点上的保留资源量,则将该节点的节点优先级设置得较高;若某个节点上的分配的任务的需求资源量超过该节点上的保留资源量且小于该节点的最大资源量,则按该节点的权重设置该节点的节点优先级高低。

进一步的,上述设备中,所述资源池中的节点组成树形结构,其中,节点之间满足以下约束:

子节点只使用父节点的最大资源量;

同级兄弟节点使用的资源量总和不超过父节点最大资源量;

同级兄弟节点相互借用超过同级兄弟节点的最大资源量的父节点的最大资源量的剩余资源量。

进一步的,上述设备中,所述策略应用模块,用于当所述资源池中的节点组成树形结构时,按所属的用户将所述任务优先级排序后的任务分配到资源池中对应的用户的叶子节点上。

进一步的,上述设备中,所述策略应用模块,用于根据同一用户下的每个叶子节点的当前占用资源量额和/或当前任务数量,将同一用户的任务均衡分配到同一用户下各个叶子节点上。

进一步的,上述设备中,所述策略应用模块,用于当所述资源池中的节点组成树形结构时,对树形结构中的叶子节点的父节点即树形结构的倒数第二层节点进行优先级排序,其中,根据所有叶子节点的上层节点上分配的任务的需求资源量和资源指标对倒数第二层节点进行优先级排序,树形结构中除叶子节点外的每一上层节点上分配的任务的需求资源量为其下层节点上的分配的任务的需求资源量之和;根据叶子节点上分配的任务的需求资源量和资源指标分别对每个倒数第二层节点下的叶子节点进行优先级排序;根据所述倒数第二层节点和叶子节点的优先级排序,得到所有叶子节点的优先级排序。

进一步的,上述设备中,所述策略应用模块,用于根据每个节点上的分配的任务的需求资源量和每个节点上的资源指标对所有节点进行节点优先级一次排序;

在所述节点优先级一次排序的基础上,按照用户的等级对所有节点进行节点优先级二次排序,在同一节点内的任务,保持所述任务优先级的排序结果。

进一步的,上述设备中,所述策略应用模块,用于对树形结构中的叶子节点的父节点即树形结构的倒数第二层节点进行优先级排序,其中,根据所有叶子节点的上层节点上分配的任务的需求资源量和资源指标对倒数第二层节点进行优先级排序,其中,树形结构中除叶子节点外的每一上层节点上分配的任务的需求资源量为其下层节点上的分配的任务的需求资源量之和;根据叶子节点上分配的任务的需求资源量和资源指标分别对每个倒数第二层节点下的叶子节点进行优先级排序;根据所述倒数第二层节点和叶子节点的优先级排序,得到所有叶子节点的优先级一次排序;在所有叶子节点的优先级一次排序的基础上,按照叶子节点所属的用户的等级进行所有叶子节点的优先级二次排序,在同一叶子节点内的任务,保持所述任务优先级的排序结果。

进一步的,上述设备中,所述策略应用模块,用于让不同的用户之间共享被分配到的节点上的一部分或全部资源。

进一步的,上述设备中,所述任务类型感知模块获取的所述任务类型包括:用户身份和任务类型信息,其中,用户身份信息包括用户的角色和/或分组、服务保证等级、用户使用的服务器地址。

进一步的,上述设备中,所述集群负载感知模块,用于获取计算集群中的服务器的当前运行状态和历史运行状态、服务器上运行的任务的当前运行状态和历史运行状态;

所述任务类型感知模块,用于按任务类型、计算集群中的服务器的当前运行状态和历史运行状态、服务器上运行的任务的当前运行状态和历史运行状态,对所述筛选出的任务进行任务优先级排序。

根据本申请的另一面,还提供一种基于计算的设备,包括:

处理器;以及

被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:

根据计算集群中所有服务器的当前占用总资源量,确定所述计算集群中各服务器的当前的剩余总资源量配额;

根据所述计算集群中各服务器上各用户当前运行的任务数量,确定各用户当前的剩余任务数量配额;

从新接收的任务中筛选出数量小于或等于各用户当前的剩余任务数量配额的任务,其中,所述筛选出的所有任务的需求总资源量小于或等于所述当前的剩余总资源量配额;

获取所述筛选出的任务的任务类型,按任务类型对所述筛选出的任务进行任务优先级排序;

按所属的用户将所述任务优先级排序后的任务分配到资源池中对应的用户的节点上,所述资源池中的节点对应于所述计算集群中的服务器;

根据每个节点上的分配的任务的需求资源量和每个节点上的资源指标对所有节点进行节点优先级排序;

按所述节点优先级排序调度对应的服务器执行所述节点上分配的任务,其中,同一节点上的任务按所述任务优先级调度;

更新计算集群中对应服务器的当前占用总资源量和各用户当前运行的任务数。

根据本申请的另一面,还提供一种计算机可读存储介质,其上存储有计算机可执行指令,该计算机可执行指令被处理器执行时使得该处理器:

根据计算集群中所有服务器的当前占用总资源量,确定所述计算集群中各服务器的当前的剩余总资源量配额;

根据所述计算集群中各服务器上各用户当前运行的任务数量,确定各用户当前的剩余任务数量配额;

从新接收的任务中筛选出数量小于或等于各用户当前的剩余任务数量配额的任务,其中,所述筛选出的所有任务的需求总资源量小于或等于所述当前的剩余总资源量配额;

获取所述筛选出的任务的任务类型,按任务类型对所述筛选出的任务进行任务优先级排序;

按所属的用户将所述任务优先级排序后的任务分配到资源池中对应的用户的节点上,所述资源池中的节点对应于所述计算集群中的服务器;

根据每个节点上的分配的任务的需求资源量和每个节点上的资源指标对所有节点进行节点优先级排序;

按所述节点优先级排序调度对应的服务器执行所述节点上分配的任务,其中,同一节点上的任务按所述任务优先级调度;

更新计算集群中对应服务器的当前占用总资源量和各用户当前运行的任务数。

与现有技术相比,本申请通过根据计算集群中所有服务器的当前占用总资源量,确定所述计算集群中各服务器的当前的剩余总资源量配额,根据所述计算集群中各服务器上各用户当前运行的任务数量,确定各用户当前的剩余任务数量配额,能够对当前集群负载主动感知,通过从新接收的任务中筛选出数量小于或等于各用户当前的剩余任务数量配额的任务,按所属的用户将所述任务优先级排序后的任务分配到资源池中对应的用户的节点上,并对所有节点进行节点优先级排序,无需预先为任务指定固定的资源池,调度策略无需随着调度器的配置而固定下来,调度策略能够动态的生成,实现计算集群的计算资源灵活、动态分配,实现更加细粒度的资源分配和任务调度。

另外,通过获取所述筛选出的任务的任务类型,能够对当前任务类型的主动感知,通过按任务类型对所述筛选出的任务进行任务优先级排序,能够满足不同类型任务(如交互式和批处理任务)的响应需求,在保证计算集群的计算资源被充分使用的前提下,实现不同类型的任务在合理时间内完成,同时提高使用者的体验。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1示出根据本申请一个方面的一种计算集群中多用户的任务调度方法及设备的原理图;

图2示出本申请中一实施例的资源池中的节点组成树形结构示意图;

图3示出根据本申请另一实施例的资源池中的节点组成树形结构的示意图。

附图中相同或相似的附图标记代表相同或相似的部件。

具体实施方式

下面结合附图对本申请作进一步详细描述。

在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

本申请提供一种计算集群中多用户的任务调度方法,包括:

步骤s1,根据计算集群中所有服务器的当前占用总资源量,确定所述计算集群中各服务器的当前的剩余总资源量配额;例如,一计算集群中所有服务器的总资源量配额为100,计算集群中所有服务器的当前占用总资源量为60,则所述计算集群中各服务器的当前的剩余总资源量配额为100-60=40;

步骤s2,根据所述计算集群中各服务器上各用户当前运行的任务数量,确定各用户当前的剩余任务数量配额;例如,用户a的任务配额是10,计算集群中各服务器上用户a当前运行的任务数量为3,则用户a当前的剩余任务数量配额为10-3=7;用户b的任务配额是13,计算集群中各服务器上用户b当前运行的任务数量为8,则用户a当前的剩余任务数量配额为13-8=5;用户b的任务配额是20,计算集群中各服务器上用户b当前运行的任务数量为10,则用户a当前的剩余任务数量配额为20-10=10;

步骤s3,从新接收的任务中筛选出数量小于或等于各用户当前的剩余任务数量配额的任务,其中,所述筛选出的所有任务的需求总资源量小于或等于所述当前的剩余总资源量配额;

步骤s4,获取所述筛选出的任务的任务类型,按任务类型对所述筛选出的任务进行任务优先级排序;在此,每一用户对应的筛选出的任务可以分别按任务类型进行任务优先级排序,例如,用户a的筛选出的6个任务分别按任务类型进行任务优先级排序,用户b的筛选出的4个任务分别按任务类型进行任务优先级排序,用户c的筛选出的8个任务分别按任务类型进行任务优先级排序;

步骤s5,按所属的用户将所述任务优先级排序后的任务分配到资源池中对应的用户的节点上,所述资源池中的节点对应于所述计算集群中的服务器;在此,每个用户与资源池对应的节点对应,不同用户可以对应资源池中相同或不同的节点,所述资源池中的节点与所述计算集群中的服务器,根据实际需要,可以是一对多的关系,也可以是多对一的关系,还可以是一对一的关系;

步骤s6,根据每个节点上的分配的任务的需求资源量和每个节点上的资源指标对所有节点进行节点优先级排序;

步骤s7,按所述节点优先级排序调度对应的服务器执行所述节点上分配的任务,其中,同一节点上的任务按所述任务优先级调度;

步骤s8,更新计算集群中对应服务器的当前占用总资源量和各用户当前运行的任务数。

在此,本实施例,通过根据计算集群中所有服务器的当前占用总资源量,确定所述计算集群中各服务器的当前的剩余总资源量配额,根据所述计算集群中各服务器上各用户当前运行的任务数量,确定各用户当前的剩余任务数量配额,能够对当前集群负载主动感知,通过从新接收的任务中筛选出数量小于或等于各用户当前的剩余任务数量配额的任务,按所属的用户将所述任务优先级排序后的任务分配到资源池中对应的用户的节点上,并对所有节点进行节点优先级排序,无需预先为任务指定固定的资源池,调度策略无需随着调度器的配置而固定下来,调度策略能够动态的生成,实现计算集群的计算资源灵活、动态分配,实现更加细粒度的资源分配和任务调度。

另外,通过获取所述筛选出的任务的任务类型,能够对当前任务类型的主动感知,通过按任务类型对所述筛选出的任务进行任务优先级排序,能够满足不同类型任务(如交互式和批处理任务)的响应需求,在保证计算集群的计算资源被充分使用的前提下,实现不同类型的任务在合理时间内完成,同时提高使用者的体验。

本申请的计算集群中多用户的任务调度方法一实施例中,步骤s6中,每个节点上的资源指标包括:cpu资源量、内存资源量、权重、保留资源量和最大资源量等。其中,所述保留资源量是该节点专属的资源量,其它节点不能占用;每个节点的最大资源量大于该节点的保留资源量。

本申请的计算集群中多用户的任务调度方法一实施例中,步骤s6,根据每个节点上的分配的任务的需求资源量和每个节点上的资源指标对所有节点进行节点优先级排序,包括:

若某个节点上的分配的任务的需求资源量小于该节点上的保留资源量,则将该节点的节点优先级设置得较高;

若某个节点上的分配的任务的需求资源量超过该节点上的保留资源量且小于该节点的最大资源量,则按该节点的权重设置该节点的节点优先级高低,从而保证优先级设置得更精确。例如,权重大的,将该节点的节点优先级设置得较高,权重小的,将该节点的节点优先级设置得较低。

本申请的计算集群中多用户的任务调度方法一实施例中,步骤s5中,所述资源池中的节点组成树形结构,其中,节点之间满足以下约束:

子节点只能使用父节点的最大资源量;如图2所示,节点n2为节点n21和n22的父节点,根节点root为节点n1和n2的父节点,如父节点n2的最大资源量为60,那么节点n21和n22只能共同使用60的最大资源量;

同级兄弟节点(如n1和n2)使用的资源量总和不超过父节点最大资源量;如图2所示,节点n21和n22使用的资源量总和不超过父节点的最大资源量60;

同级兄弟节点直接可以相互借用超过兄弟节点的最大资源量的父节点的最大资源量的剩余资源量。如图3所示,节点n3为节点n31、n32和n33的父节点,节点n3的最大资源量为100,节点n31使用了其自己的最大资源量30,节点n32使用了其自己的最大资源量40,那么节点n33可以使用父节点n3的最大资源量的剩余资源量100-30-40=30。

在此,每个节点上的分配的任务的需求资源量即为该节点的使用的资源量。

本申请的计算集群中多用户的任务调度方法一实施例中,步骤s5,按所属的用户将所述任务优先级排序后的任务分配到资源池中对应的用户的节点上的步骤中,

不同的用户之间共享被分配到的节点上的一部分或全部资源,例如,如图2所示,租户a使用n21的所有资源、并和租户b、c共享n2的资源,租户b、c共享n2的资源,从而保证每个节点资源的充分利用。

本申请的计算集群中多用户的任务调度方法一实施例中,当所述资源池中的节点组成树形结构时,步骤s5,按所属的用户将所述任务优先级排序后的任务分配到资源池中对应的用户的节点上,包括:

步骤s51,按所属的用户将所述任务优先级排序后的任务分配到资源池中对应的用户的叶子节点上。

在此,如图2所示,所述叶子节点时树形结构中最下一层的子节点,同级叶子节点为兄弟节点,同级中间节点为兄弟节点,图2中n1、n21、n22为叶子节点,任务t1被最终分配到叶子节点n1上,任务t2、t3被最终分配到叶子节点n21上,任务t4被最终分配到叶子节点n22上。

本申请的计算集群中多用户的任务调度方法一实施例中,步骤s51,按所属的用户将所述任务优先级排序后的任务分配到资源池中对应的用户的叶子节点上的步骤中,

所述任务被分配到资源池中最大资源量大于且接近所述任务的需求资源量的叶子节点,以充分利用每一叶子节点的资源。

本申请的计算集群中多用户的任务调度方法一实施例中,步骤s51,按所属的用户将所述任务优先级排序后的任务分配到资源池中对应的用户的叶子节点上的步骤中,

根据同一用户下的每个叶子节点的当前占用资源量额和/或当前任务数量,将同一用户的任务均衡分配到同一用户下各个叶子节点上,从而保证同一用户下各个叶子节点的当前占用资源量额和/或当前任务数量保持均衡。

本申请的计算集群中多用户的任务调度方法一实施例中,如图2所示,当所述资源池中的节点组成树形结构时,步骤s6,根据每个节点上的分配的任务的需求资源量和每个节点上的资源指标对所有节点进行节点优先级排序,包括:

对树形结构中的叶子节点的父节点即树形结构的倒数第二层节点进行优先级排序,其中,根据所有叶子节点的上层节点上分配的任务的需求资源量和资源指标对倒数第二层节点进行优先级排序,树形结构中除叶子节点外的每一上层节点上分配的任务的需求资源量为其下层节点上的分配的任务的需求资源量之和;

在此,所述资源指标是指某一节点的资源限额,可以从根节点开始对每一层节点排序,下一层节点的排序可以根据上一层节点的优先级排序和本层节点上分配的任务的需求资源量和资源指标得到;例如,如图2所示,倒数第二层节点n1、n2的优先级排序是n2、n1;

根据叶子节点上分配的任务的需求资源量和资源指标分别对每个倒数第二层节点下的叶子节点进行优先级排序;例如,如图2所示,倒数第二层节点n2下的叶子节点n21、n22的优先级排序是n22、n21;

根据所述倒数第二层节点和叶子节点的优先级排序,得到所有叶子节点的优先级排序。例如,如图2所示,所有叶子节点的节点的优先级排序为n22、n21、n1。

在此,对应的,步骤s7,按所述节点优先级排序调度对应的服务器执行所述节点上分配的任务,其中,同一节点上的任务按所述任务优先级调度,包括:

按所述叶子节点的节点优先级排序调度对应的服务器执行所述节点上分配的任务,其中,同一叶子节点上的任务按所述任务优先级调度。

本申请的计算集群中多用户的任务调度方法一实施例中,步骤s6,根据每个节点上的分配的任务的需求资源量和每个节点上的资源指标对所有节点进行节点优先级排序,包括:

步骤s6-1,根据每个节点上的分配的任务的需求资源量和每个节点上的资源指标对所有节点进行节点优先级一次排序;

步骤s6-2,在所述节点优先级一次排序的基础上,按照用户的等级对所有节点进行节点优先级二次排序,在同一节点内的任务,保持步骤s4的所述任务优先级的排序结果。

在此,例如用户a的节点上有两个任务t5、t6,用户b的节点上有两个任务t7、t8,步骤s4的任务优先级的排序结果依次为t5、t6、t8、t7,步骤s6-1中节点优先级一次排序的结果依次为用户a的节点、用户b的节点,s6-2中节点优先级一次排序的结果依次为用户b的节点、用户a的节点,则任务优先级的排序结果进一步调整为t8、t7、t5、t6,通过对节点进行两次优先级排序,使节点优先级更准确。

本申请的计算集群中多用户的任务调度方法一实施例中,步骤s6,根据每个节点上的分配的任务的需求资源量和每个节点上的资源指标对所有节点进行节点优先级排序,包括:

步骤s6-1,对树形结构中的叶子节点的父节点即树形结构的倒数第二层节点进行优先级排序,其中,根据所有叶子节点的上层节点上分配的任务的需求资源量和资源指标对倒数第二层节点进行优先级排序,其中,树形结构中除叶子节点外的每一上层节点上分配的任务的需求资源量为其下层节点上的分配的任务的需求资源量之和;在此,可以从根节点开始对每一层节点排序,下一层节点的排序可以根据上一层节点的优先级排序和本层节点上分配的任务的需求资源量和资源指标得到;例如,如图2所示,倒数第二层节点n1、n2的优先级排序是n2、n1;

根据叶子节点上分配的任务的需求资源量和资源指标分别对每个倒数第二层节点下的叶子节点进行优先级排序;例如,如图2所示,倒数第二层节点n2下的叶子节点n21、n22的优先级排序是n22、n21;

根据所述倒数第二层节点和叶子节点的优先级排序,得到所有叶子节点的优先级一次排序;

步骤s6-2,在所有叶子节点的优先级一次排序的基础上,按照叶子节点所属的用户的等级进行所有叶子节点的优先级二次排序,在同一叶子节点内的任务,保持步骤s4的所述任务优先级的排序结果。

本申请的计算集群中多用户的任务调度方法一实施例中,步骤s4,获取所述筛选出的任务的任务类型中,所述任务类型包括:

用户身份和任务类型信息,其中,用户身份信息包括用户的角色和/或分组、服务保证等级(sla)、用户使用的服务器地址等相关信息,任务类型信息包括发出任务的业务类型(如批处理还是交互查询)、任务资源消耗、任务提交时间、预计执行时间等。

本申请的计算集群中多用户的任务调度方法一实施例中,步骤s4,按任务类型对所述筛选出的任务进行任务优先级排序,包括:

按任务类型、计算集群中的服务器的当前运行状态和历史运行状态、服务器上运行的任务的当前运行状态和历史运行状态,对所述筛选出的任务进行任务优先级排序,从而保证任务优先级排序更精准。

详细的,对于任何的计算平台来讲,调度器的功能在于将资源合理分配到任务上,实现计算资源利用的最大化。要实现较高的分配效率,调度器除了自身结构之外,还需要能够对系统运行状态有所感知,将任务调度-执行-感知-调度的过程实现信息闭环,从而动态生成最优的调度策略。本申请的任务调度流程如图1所示:

4.1输入/输出模块

输入为一个或多个待执行的任务,输出为任务在计算集群上的执行方案。

在本申请中,任务可以被抽象为一组描述,其基本信息包括提交任务的租户、任务处理的数据对象、执行逻辑、以及输出对象。多个任务之间或相互独立、或存在一定的依赖关系。

4.2集群负载感知模块

负责采集、分析计算集群中的服务器的当前运行状态和历史运行状态、服务器上运行的任务的当前运行状态和历史运行状态,为策略生成模块提供输入信息。当前运行状态和历史运行状态可以包括服务器或任务占用的cpu资源量、内存资源量、运行花费时间、出错概率等等。

本申请中,计算集群中的服务器的当前运行状态和历史运行状态、服务器上运行的任务的当前运行状态和历史运行状态为包含集群中软件和硬件的状态信息的集合。软硬件信息标志着集群运行状态的好坏,在本申请中拥有两个基本的功能实现:

一是帮助调度器探查资源池中各节点的任务执行状态,对计算集群当前的处理能力进行评估;

二是探查已经下发的策略对集群状态性能的影响,实现策略和状态变化间的正反馈,进而帮助策略生成模块优化未来的调度策略。

采集、分析计算集群中的服务器的历史运行状态、服务器上运行的任务的历史运行状态,可以是负责对已经调度完成的任务进行统计分析,得到任务画像,其基本信息包括:哪些输入数据为访问热点、不同任务的执行频次、执行时间分布、与集群状态变化的关联等。

4.3任务类型感知模块

负责结合多源信息,对任务类优先级进行评估。输入为任务描述,输出为任务优先级标识,如1,2,3。

任务类型感知模块中,可以用到两种信息来源,即租户身份和任务类型信息。前者包括租户的角色/分组、服务保证等级(sla)、租户使用的服务器地址等相关信息,后者包括发出任务的业务类型(如批处理还是交互查询)、任务资源消耗、任务提交时间、预计执行时间等。

任务感知模块综合这两类信息,对任务的优先级进行评定,并将评定结果传递给策略生成模块。例如,判断租户的服务保证等级,服务等级高的则优先调度。

4.4策略生成模块

策略生成模块是调度器的核心模块,通过综合集群负载和任务类型信息,输出新任务的调度策略。

调度策略通过实现一组规则动态生成,包括:

1)判断集群负载是否满足当前任务的运行,如果满足则优先调度,同时,判断租户的资源控制,资源使用低于预分配资源的则优先调度,即步骤s1,根据计算集群中所有服务器的当前占用总资源量,确定所述计算集群中各服务器的当前的剩余总资源量配额,步骤s2,根据所述计算集群中各服务器上各用户当前运行的任务数量,确定各用户当前的剩余任务数量配额,步骤s3,从新接收的任务中筛选出数量小于或等于各用户当前的剩余任务数量配额的任务;

2)按照4.3中生成的任务优先级将待调度的任务进行排序,优先级高的先进行调度,即步骤s4,按任务类型对所述筛选出的任务进行任务优先级排序;

3)对生成的任务策略传递给转发适配到调度资源池上,实现任务需求和资源的关联,即步骤s5,按所属的用户将所述任务优先级排序后的任务分配到资源池中对应的用户的节点上,所述资源池中的节点对应于所述计算集群中的服务器。

4.5调度器资源池结构

资源池采用树形数据结构进行存储,如图2所示的3级树结构中,总的资源池由树的根节点标识,即root。其包含两个子节点n1和n2,同时n2也包含两个子节点。该结构中,叶子节点为任务的提交节点,即n1,n21,n22,也就是提交的任务被关联到这些节点上。

每个节点上的资源指标包括:cpu、内存资源、权重、保留资源量、最大资源量等。其中,保留资源量是该节点专属的资源量,每个节点的最大资源量大于该节点的保留资源量。

节点之间满足以下约束:

子节点只能使用父节点的最大资源量;如图2所示,节点n2为节点n21和n22的父节点,根节点root为节点n1和n2的父节点,如父节点n2的最大资源量为60,那么节点n21和n22只能共同使用60的最大资源量;

同级兄弟节点(如n1和n2)使用的资源量总和不超过父节点最大资源量;如图2所示,节点n21和n22使用的资源量总和不超过父节点的最大资源量60;

同级兄弟节点直接可以相互借用超过兄弟节点的各自最大资源量的父节点的最大资源量的剩余资源量。如图3所示,节点n3为节点n31、n32和n33的父节点,节点n3的最大资源量为100,节点n31使用了其自己的最大资源量30,节点n32使用了其自己的最大资源量40,那么节点n33可以使用父节点n3的最大资源量的剩余资源量100-30-40=30。

同时在资源池上,对租户优先级越高的权限进行了控制,具体规则如下:

对于每个租户,仅能够使用资源池中的一部分或全部资源,如租户a使用n21的所有资源、并和租户b、c共享n22的资源。

不同租户可以共享一部分或全部资源,如租户b、c共享相同的资源。

4.6策略应用模块

策略应用模块根据4.4的策略规则和4.5的资源池结构,对新任务进行调度,并提交计算集群中对应的服务器进行执行。

这里的策略应用模块包括执行以下主要步骤:

步骤s3,从新接收的任务中筛选出数量小于或等于各用户当前的剩余任务数量配额的任务,其中,所述筛选出的所有任务的需求总资源量小于或等于所述当前的剩余总资源量配额,如筛选出满足条件的任务,则进入下一步,不满足则等待;

步骤s4,获取所述筛选出的任务的任务类型,按任务类型对所述筛选出的任务进行任务优先级排序;

步骤s5,按所属的用户将所述任务优先级排序后的任务分配到资源池中对应的用户的节点上,所述资源池中的节点对应于所述计算集群中的服务器;在此,这里的用户可以是租户,将每个租户的任务分配到资源池中该租户拥有的节点上,如租户a提交的任务被分配到n2和n21;

步骤s6-1,根据每个节点上的分配的任务的需求资源量和每个节点上的资源指标对所有节点进行节点优先级一次排序;在此,如图2所示,可以从root节点出发,根据每个节点上的分配的任务的需求资源量和每个节点上的资源指标对节点进行递归排序,排序越靠前则优先级越高;

步骤s6-2,对步骤s6-1中的结果按照租户sla等级对所有节点进行节点优先级二次排序,在同一节点内的任务,保持步骤s4的任务优先级的排序结果;

步骤s7,按所述节点优先级排序调度对应的服务器执行所述节点上分配的任务,其中,同一节点上的任务按所述任务优先级调度;

步骤s8,更新计算集群中对应服务器的当前占用总资源量和各用户当前运行的任务数,在此,可以根据任务进度对应更新调度资源池状态;

步骤s9,如果调度器通过步骤s1,根据计算集群中所有服务器的当前占用总资源量,确定所述计算集群中各服务器的当前的剩余总资源量配额,和步骤s2,根据所述计算集群中各服务器上各用户当前运行的任务数量,确定各用户当前的剩余任务数量配额,监测到计算集群中的服务器有空闲资源释放,则返回s3进入下一轮调度。

根据本申请的另一面,还提供一种计算集群中多用户的任务调度设备,该设备包括:

集群负载感知模块,用于根据计算集群中所有服务器的当前占用总资源量,确定所述计算集群中各服务器的当前的剩余总资源量配额;及根据所述计算集群中各服务器上各用户当前运行的任务数量,确定各用户当前的剩余任务数量配额;

策略应用模块,用于从新接收的任务中筛选出数量小于或等于各用户当前的剩余任务数量配额的任务,其中,所述筛选出的所有任务的需求总资源量小于或等于所述当前的剩余总资源量配额,按所属的用户将由所述任务类型感知模块任务优先级排序后的任务分配到资源池中对应的用户的节点上,所述资源池中的节点对应于所述计算集群中的服务器;根据每个节点上的分配的任务的需求资源量和每个节点上的资源指标对所有节点进行节点优先级排序;按所述节点优先级排序调度对应的服务器执行所述节点上分配的任务,其中,同一节点上的任务按所述任务优先级调度;通知所述集群负载感知模块更新计算集群中对应服务器的当前占用总资源量和各用户当前运行的任务数;

任务类型感知模块,用于获取所述筛选出的任务的任务类型,按任务类型对所述筛选出的任务进行任务优先级排序;

本申请一实施例的计算集群中多用户的任务调度设备中,每个节点上的资源指标包括:cpu资源量、内存资源量、权重、保留资源量和最大资源量。

本申请一实施例的计算集群中多用户的任务调度设备中,所述策略应用模块,用于若某个节点上的分配的任务的需求资源量小于该节点上的保留资源量,则将该节点的节点优先级设置得较高;若某个节点上的分配的任务的需求资源量超过该节点上的保留资源量且小于该节点的最大资源量,则按该节点的权重设置该节点的节点优先级高低。

本申请一实施例的计算集群中多用户的任务调度设备中,所述资源池中的节点组成树形结构,其中,节点之间满足以下约束:

子节点只使用父节点的最大资源量;

同级兄弟节点使用的资源量总和不超过父节点最大资源量;

同级兄弟节点相互借用超过同级兄弟节点的最大资源量的父节点的最大资源量的剩余资源量。

本申请一实施例的计算集群中多用户的任务调度设备中,所述策略应用模块,用于当所述资源池中的节点组成树形结构时,按所属的用户将所述任务优先级排序后的任务分配到资源池中对应的用户的叶子节点上。

本申请一实施例的计算集群中多用户的任务调度设备中,所述策略应用模块,用于根据同一用户下的每个叶子节点的当前占用资源量额和/或当前任务数量,将同一用户的任务均衡分配到同一用户下各个叶子节点上。

本申请一实施例的计算集群中多用户的任务调度设备中,所述策略应用模块,用于当所述资源池中的节点组成树形结构时,对树形结构中的叶子节点的父节点即树形结构的倒数第二层节点进行优先级排序,其中,根据所有叶子节点的上层节点上分配的任务的需求资源量和资源指标对倒数第二层节点进行优先级排序,树形结构中除叶子节点外的每一上层节点上分配的任务的需求资源量为其下层节点上的分配的任务的需求资源量之和;根据叶子节点上分配的任务的需求资源量和资源指标分别对每个倒数第二层节点下的叶子节点进行优先级排序;根据所述倒数第二层节点和叶子节点的优先级排序,得到所有叶子节点的优先级排序。

本申请一实施例的计算集群中多用户的任务调度设备中,所述策略应用模块,用于根据每个节点上的分配的任务的需求资源量和每个节点上的资源指标对所有节点进行节点优先级一次排序;

在所述节点优先级一次排序的基础上,按照用户的等级对所有节点进行节点优先级二次排序,在同一节点内的任务,保持所述任务优先级的排序结果。

本申请一实施例的计算集群中多用户的任务调度设备中,所述策略应用模块,用于对树形结构中的叶子节点的父节点即树形结构的倒数第二层节点进行优先级排序,其中,根据所有叶子节点的上层节点上分配的任务的需求资源量和资源指标对倒数第二层节点进行优先级排序,其中,树形结构中除叶子节点外的每一上层节点上分配的任务的需求资源量为其下层节点上的分配的任务的需求资源量之和;根据叶子节点上分配的任务的需求资源量和资源指标分别对每个倒数第二层节点下的叶子节点进行优先级排序;根据所述倒数第二层节点和叶子节点的优先级排序,得到所有叶子节点的优先级一次排序;在所有叶子节点的优先级一次排序的基础上,按照叶子节点所属的用户的等级进行所有叶子节点的优先级二次排序,在同一叶子节点内的任务,保持所述任务优先级的排序结果。

本申请一实施例的计算集群中多用户的任务调度设备中,所述策略应用模块,用于让不同的用户之间共享被分配到的节点上的一部分或全部资源。

本申请一实施例的计算集群中多用户的任务调度设备中,所述任务类型感知模块获取的所述任务类型包括:用户身份和任务类型信息,其中,用户身份信息包括用户的角色和/或分组、服务保证等级、用户使用的服务器地址。

本申请一实施例的计算集群中多用户的任务调度设备中,所述集群负载感知模块,用于获取计算集群中的服务器的当前运行状态和历史运行状态、服务器上运行的任务的当前运行状态和历史运行状态;

所述任务类型感知模块,用于按任务类型、计算集群中的服务器的当前运行状态和历史运行状态、服务器上运行的任务的当前运行状态和历史运行状态,对所述筛选出的任务进行任务优先级排序。

根据本申请的另一面,还提供一种基于计算的设备,包括:

处理器;以及

被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:

根据计算集群中所有服务器的当前占用总资源量,确定所述计算集群中各服务器的当前的剩余总资源量配额;

根据所述计算集群中各服务器上各用户当前运行的任务数量,确定各用户当前的剩余任务数量配额;

从新接收的任务中筛选出数量小于或等于各用户当前的剩余任务数量配额的任务,其中,所述筛选出的所有任务的需求总资源量小于或等于所述当前的剩余总资源量配额;

获取所述筛选出的任务的任务类型,按任务类型对所述筛选出的任务进行任务优先级排序;

按所属的用户将所述任务优先级排序后的任务分配到资源池中对应的用户的节点上,所述资源池中的节点对应于所述计算集群中的服务器;

根据每个节点上的分配的任务的需求资源量和每个节点上的资源指标对所有节点进行节点优先级排序;

按所述节点优先级排序调度对应的服务器执行所述节点上分配的任务,其中,同一节点上的任务按所述任务优先级调度;

更新计算集群中对应服务器的当前占用总资源量和各用户当前运行的任务数。

根据本申请的另一面,还提供一种计算机可读存储介质,其上存储有计算机可执行指令,该计算机可执行指令被处理器执行时使得该处理器:

根据计算集群中所有服务器的当前占用总资源量,确定所述计算集群中各服务器的当前的剩余总资源量配额;

根据所述计算集群中各服务器上各用户当前运行的任务数量,确定各用户当前的剩余任务数量配额;

从新接收的任务中筛选出数量小于或等于各用户当前的剩余任务数量配额的任务,其中,所述筛选出的所有任务的需求总资源量小于或等于所述当前的剩余总资源量配额;

获取所述筛选出的任务的任务类型,按任务类型对所述筛选出的任务进行任务优先级排序;

按所属的用户将所述任务优先级排序后的任务分配到资源池中对应的用户的节点上,所述资源池中的节点对应于所述计算集群中的服务器;

根据每个节点上的分配的任务的需求资源量和每个节点上的资源指标对所有节点进行节点优先级排序;

按所述节点优先级排序调度对应的服务器执行所述节点上分配的任务,其中,同一节点上的任务按所述任务优先级调度;

更新计算集群中对应服务器的当前占用总资源量和各用户当前运行的任务数。

上述设备的各实施例的详细内容具体可参见各方法实施例的对应部分,在此,不再赘述。

综上所述,本申请通过根据计算集群中所有服务器的当前占用总资源量,确定所述计算集群中各服务器的当前的剩余总资源量配额,根据所述计算集群中各服务器上各用户当前运行的任务数量,确定各用户当前的剩余任务数量配额,能够对当前集群负载主动感知,通过从新接收的任务中筛选出数量小于或等于各用户当前的剩余任务数量配额的任务,按所属的用户将所述任务优先级排序后的任务分配到资源池中对应的用户的节点上,并对所有节点进行节点优先级排序,无需预先为任务指定固定的资源池,调度策略无需随着调度器的配置而固定下来,调度策略能够动态的生成,实现计算集群的计算资源灵活、动态分配,实现更加细粒度的资源分配和任务调度。

另外,本申请通过获取所述筛选出的任务的任务类型,能够对当前任务类型的主动感知,通过按任务类型对所述筛选出的任务进行任务优先级排序,能够满足不同类型任务(如交互式和批处理任务)的响应需求,在保证计算集群的计算资源被充分使用的前提下,实现不同类型的任务在合理时间内完成,同时提高使用者的体验。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(asic)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,ram存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。

另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。

对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

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