一种任务分配方法及装置与流程

文档序号:12123294阅读:183来源:国知局
一种任务分配方法及装置与流程

本发明涉及计算机技术领域,特别涉及一种任务分配方法及装置。



背景技术:

随着大数据时代的到来,单纯的高性能单节点运算已经很难满足大数据计算的需要,MapReduce、Spark以及Storm等分布式计算模型应运而生。

目前,在分布式计算模型中,利用多个计算节点构建分布式计算模型,通过将一个计算量较大的目标计算任务按照时间顺序将其拆分为串行计算过程,当串行计算过程可以进一步拆分为多个并行计算过程时,进一步将当前串行计算过程拆分为多个并行任务时,针对当前串行计算过程下的每一个并行任务,分别将其随机分配到分布式计算模型中相应的计算节点上,以使相应计算节点分别执行对应的并行任务。

由于分布式计算模型中各个计算节点的硬件性能并不相同,当硬件性能较低的计算节点不能满足当前计算节点分配到的并行任务的计算需求或存储需求时,则需要在当前计算节点上kill掉该并行任务,并将该并行任务重新分配给其他计算节点,频繁的kill并重启并行任务将会耗费大量的时间,增加目标计算任务的计算时长。



技术实现要素:

本发明实施例提供了一种任务分配方法及装置,可减小目标计算任务的计算时长。

第一方面,本发明实施例提供了一种任务分配方法,包括:

S1:获取外部分布式计算模型中每一个计算节点分别对应的资源信息,根据每一个计算节点分别对应的资源信息将当前计算节点确定为计算优先型计算节点或存储优先型计算节点;

S2:获取目标计算任务,将所述目标计算任务解析为具备时间顺序的至少两个计算过程;

S3:按顺序解析所述至少两个计算过程,在当前计算过程可以被解析为至少两个并行任务时,将当前计算过程解析为至少两个并行任务;

S4:解析每一个所述并行任务,以确定每一个所述并行任务分别对应的属性信息;

S5:根据每一个所述并行任务分别对应的属性信息,将当前并行任务确定为数据密集型并行任务或计算密集型并行任务;

S6将每一个所述计算密集型并行任务分别分配给所述至少一个计算优先型计算节点,并将每一个所述数据密集型并行任务分别分配给所述至少一个存储优先型计算节点。

优选地,

所述解析每一个所述并行任务,以确定每一个所述并行任务分别对应的属性信息,包括:解析每一个所述并行任务,以确定每一个所述并行任务分别对应的计算量、数据量以及算法复杂度。

优选地,

还包括:根据每一个所述并行任务分别对应的计算量、数据量以及算法复杂度确定每一个所述并行任务分别对应的资源需求信息;

所述将每一个所述计算密集型并行任务分别分配给所述至少一个计算优先型计算节点,并将每一个所述数据密集型并行任务分别分配给所述至少一个存储优先型计算节点,包括:根据每一个所述计算密集型并行任务分别对应的资源需求信息,将每一个所述计算密集型并行任务分别分配给所述至少一个计算优先型计算节点,并根据每一个所述数据密集型并行任务分别对应的资源需求信息,将每一个所述计算密集型并行任务分别分配给所述至少一个存储优先型计算节点。

优选地,

所述资源需求信息至少包括如下三种申请信息:内存资源申请信息、IO资源申请信息及CPU资源申请信息;还包括:

A1:将每一个所述并行任务分别对应的内存资源申请信息的权重、IO资源申请信息的权重以及CPU资源申请信息的权重均置为1;

A2:根据每一个所述并行任务分别对应的计算量、数据量以及算法复杂度,确定是否存在至少一个目标并行任务出现数据倾斜,如果是,则将所述目标并行任务对应的内存资源申请信息的权重、IO资源申请信息的权重以及CPU资源申请信息的权重均加1,然后执行步骤A3;否则,执行步骤A3;

A3:将每一个所述数据密集型并行任务分别对应的内存资源申请信息的权重、IO资源申请信息的权重加1,以及将每一个所述计算密集型并行任务分别对应的CPU资源申请信息的权重加1;

所述根据每一个所述计算密集型并行任务分别对应的资源需求信息,将每一个所述计算密集型并行任务分别分配给所述至少一个计算优先型计算节点,并根据每一个所述数据密集型并行任务分别对应的资源需求信息,将每一个所述数据密集型并行任务分别分配给所述至少一个存储优先型计算节点,包括:根据每一个所述计算密集型并行任务分别对应的内存资源申请信息、IO资源申请信息、CPU资源申请信息以及当前计算密集型并行任务对应的CPU资源申请信息的权重,将每一个所述计算密集型并行任务分别分配给所述至少一个计算优先型计算节点,并根据每一个所述数据密集型并行任务分别对应的内存资源申请信息、IO资源申请信息、CPU资源申请信息以及当前数据密集型并行任务对应的内存资源申请信息的权重、IO资源申请信息的权重,将每一个所述数据密集型并行任务分别分配给所述至少一个存储优先型计算节点。

优选地,还包括:

在当前计算过程不可被解析为至少两个并行任务时,解析当前计算过程,以确定当前计算过程对应的计算量、数据量以及算法复杂度;

根据当前计算过程对应的计算量、数据量以及算法复杂度确定当前计算过程的类型为数据密集型或计算密集型;

在当前计算过程的类型为数据密集型时,将当前计算过程分配给所述至少一个存储优先型计算节点;或,在当前计算过程的类型为计算密集型时,将当前计算过程分配给所述至少一个计算优先型计算节点。

第二方面,本发明实施例提供了一种任务分配装置,包括:

节点管理模块,用于获取外部分布式计算模型中每一个计算节点分别对应的资源信息,根据每一个计算节点分别对应的资源信息将当前计算节点确定为计算优先型计算节点或存储优先型计算节点;

获取模块,用于获取目标计算任务,将所述目标计算任务解析为具备时间顺序的至少两个计算过程;

第一解析模块,用于按顺序解析所述至少两个计算过程,在当前计算过程可以被解析为至少两个并行任务时,将当前计算过程解析为至少两个并行任务;

第二解析模块,用于解析每一个所述并行任务,以确定每一个所述并行任务分别对应的属性信息;

确定模块,用于根据每一个所述并行任务分别对应的属性信息,将当前并行任务确定为数据密集型并行任务或计算密集型并行任务;

任务处理模块,用于将每一个所述计算密集型并行任务分别分配给所述至少一个计算优先型计算节点,并将每一个所述数据密集型并行任务分别分配给所述至少一个存储优先型计算节点,以使分配到数据密集型并行任务的至少一个存储优先型计算节点以及分配到计算密集型并行任务的至少一个计算优先型计算节点分别执行对应的并行任务。

优选地,

所述第二解析模块,用于解析每一个所述并行任务,以确定每一个所述并行任务分别对应的计算量、数据量以及算法复杂度。

优选地,还包括:

量化处理模块,用于根据每一个所述并行任务分别对应的计算量、数据量以及算法复杂度确定每一个所述并行任务分别对应的资源需求信息;

所述任务处理模块,用于根据每一个所述计算密集型并行任务分别对应的资源需求信息,将每一个所述计算密集型并行任务分别分配给所述至少一个计算优先型计算节点,并根据每一个所述数据密集型并行任务分别对应的资源需求信息,将每一个所述计算密集型并行任务分别分配给所述至少一个存储优先型计算节点。

优选地,

还包括:权重配置模块、判断模块、第一修正模块以及第二修正模块;其中,

所述权重配置模块,用于将每一个所述并行任务分别对应的内存资源申请信息的权重、IO资源申请信息的权重以及CPU资源申请信息的权重均置为1;

判断模块,用于根据每一个所述并行任务分别对应的计算量、数据量以及算法复杂度,确定是否存在至少一个目标并行任务出现数据倾斜,如果是,则触发所述第一修正模块;否则,触发所述第二修正模块;

所述第一修正模块,用于在所述判断模块的触发下,将所述目标并行任务对应的内存资源申请信息的权重、IO资源申请信息的权重以及CPU资源申请信息的权重均加1,然后触发所述第二修正模块;

所述第二修正模块,用于在所述判断模块或所述第一修正模块的触发下,将每一个所述数据密集型并行任务分别对应的内存资源申请信息的权重、IO资源申请信息的权重加1,以及将每一个所述计算密集型并行任务分别对应的CPU资源申请信息的权重加1;

所述任务处理模块,用于根据每一个所述计算密集型并行任务分别对应的内存资源申请信息、IO资源申请信息、CPU资源申请信息以及当前计算密集型并行任务对应的CPU资源申请信息的权重,将每一个所述计算密集型并行任务分别分配给所述至少一个计算优先型计算节点,并根据每一个所述数据密集型并行任务分别对应的内存资源申请信息、IO资源申请信息、CPU资源申请信息以及当前数据密集型并行任务对应的内存资源申请信息的权重、IO资源申请信息的权重,将每一个所述数据密集型并行任务分别分配给所述至少一个存储优先型计算节点。

优选地,

所述第二解析模块,进一步用于在当前计算过程不可被解析为至少两个并行任务时,解析当前计算过程,以确定当前计算过程对应的计算量、数据量以及算法复杂度;

所述确定模块,进一步用于根据当前计算过程对应的计算量、数据量以及算法复杂度确定当前计算过程的类型为数据密集型或计算密集型;

所述任务处理模块,进一步用于在当前计算过程的类型为数据密集型时,将当前计算过程分配给所述至少一个存储优先型计算节点;或,在当前计算过程的类型为计算密集型时,将当前计算过程分配给所述至少一个计算优先型计算节点。

本发明实施例提供了一种任务分配方法及装置,在该方法中,首先获取外部分布式计算模型中每一个计算节点分别对应的资源信息,以根据获取的资源信息将每一个计算节点分别确定为计算优先型计算节点或存储优先型计算节点,在获取目标任务并将其拆分为具备时间顺序的多个计算过程之后,即可按顺序将可拆分的计算过程拆分为多个可并行执行的并行任务,进而确定每一个并行任务的属性信息,根据当前并行任务的属性信息将当前并行任务确定为数据密集型并行任务或计算密集型并行任务,之后,则将每一个计算密集型并行任务分别分配给计算优先型计算节点,并将每一个数据密集型并行任务分别分配给存储优先型计算节点;综上可见,通过将计算密集型任务分配给计算性能较好的计算优先型计算节点,并将数据密集型任务分配给存储性能较好的存储优先型计算节点,避免分布式计算模型中的计算节点因不能满足分配到的并行任务的计算需求或存储需求而频繁kill及重启并行任务,可减小目标计算任务的计算时长。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明一实施例提供的一种任务分配方法的流程图;

图2是本发明一实施例提供的另一种任务分配方法的流程图;

图3是本发明一实施例提供的一种任务分配装置的结构示意图;

图4是本发明一实施例提供的另一种任务分配装置的结构示意图;

图5是本发明一实施例提供的又一种任务分配装置的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

如图1所示,本发明实施例提供了一种任务分配方法,包括:

S1:获取外部分布式计算模型中每一个计算节点分别对应的资源信息,根据每一个计算节点分别对应的资源信息将当前计算节点确定为计算优先型计算节点或存储优先型计算节点;

S2:获取目标计算任务,将所述目标计算任务解析为具备时间顺序的至少两个计算过程;

S3:按顺序解析所述至少两个计算过程,在当前计算过程可以被解析为至少两个并行任务时,将当前计算过程解析为至少两个并行任务;

S4:解析每一个所述并行任务,以确定每一个所述并行任务分别对应的属性信息;

S5:根据每一个所述并行任务分别对应的属性信息,将当前并行任务确定为数据密集型并行任务或计算密集型并行任务;

S6:将每一个所述计算密集型并行任务分别分配给所述至少一个计算优先型计算节点,并将每一个所述数据密集型并行任务分别分配给所述至少一个存储优先型计算节点,以使分配到数据密集型并行任务的至少一个存储优先型计算节点以及分配到计算密集型并行任务的至少一个计算优先型计算节点分别执行对应的并行任务。

本发明上述实施例中,首先获取外部分布式计算模型中每一个计算节点分别对应的资源信息,以根据获取的资源信息将每一个计算节点分别确定为计算优先型计算节点或存储优先型计算节点,在获取目标任务并将其拆分为具备时间顺序的多个计算过程之后,即可按顺序将可拆分的计算过程拆分为多个可并行执行的并行任务,进而确定每一个并行任务的属性信息,根据当前并行任务的属性信息将当前并行任务确定为数据密集型并行任务或计算密集型并行任务,之后,则将每一个计算密集型并行任务分别分配给计算优先型计算节点,并将每一个数据密集型并行任务分别分配给存储优先型计算节点;综上可见,通过将计算密集型任务分配给计算性能较好的计算优先型计算节点,并将数据密集型任务分配给存储性能较好的存储优先型计算节点,避免分布式计算模型中的计算节点因不能满足分配到的并行任务的计算需求或存储需求而频繁kill及重启并行任务,可减小目标计算任务的计算时长。

具体地,本发明一个实施例中,根据分布式计算模型中每一个计算节点分别对应的资源信息将当前计算节点确定为存储优先型计算节点或计算优先型计算节点时,如果当前计算节点对应的资源信息反应出CPU效能相对于硬盘、内存的效能较高,当前计算节点在执行计算任务时,大部分的状况下应当是CPU在等待硬盘及内存的读、写,则可将当前计算节点确定为计算优先型计算节点;反之,如果当前计算节点对应的资源信息反应出CPU效能相对于硬盘、内存的效能较低,当前计算节点在执行计算任务时,大部分的状况下应当是CPU占用率在100%,硬盘及内存的读、写在极短的时间内即可完成而出现IO空闲,则可将当前计算节点确定为存储优先型计算节点。

进一步的,为了方便对并行任务的任务类型进行确定,以及确定同一个计算过程下的多个并行任务是否存在一个或多个并行任务发生数据倾斜,本发明一个实施例中,所述解析每一个所述并行任务,以确定每一个所述并行任务分别对应的属性信息,包括:解析每一个所述并行任务,以确定每一个所述并行任务分别对应的计算量、数据量以及算法复杂度。

本发明上述实施例中,在确定出同一个计算过程下的多个并行任务分别对应的计算量、数据量以及算法复杂度之后,如果存在至少一个目标并行任务对应的计算量、数据量或算法复杂度远高于其他并行任务相对应的计算量、数据量或算法复杂度时,则可确定当前目标并行任务出现数据倾斜。

进一步的,为了节约计算资源,本发明一个实施例中,还包括:根据每一个所述并行任务分别对应的计算量、数据量以及算法复杂度确定每一个所述并行任务分别对应的资源需求信息;

所述将每一个所述计算密集型并行任务分别分配给所述至少一个计算优先型计算节点,并将每一个所述数据密集型并行任务分别分配给所述至少一个存储优先型计算节点,包括:根据每一个所述计算密集型并行任务分别对应的资源需求信息,将每一个所述计算密集型并行任务分别分配给所述至少一个计算优先型计算节点,并根据每一个所述数据密集型并行任务分别对应的资源需求信息,将每一个所述计算密集型并行任务分别分配给所述至少一个存储优先型计算节点。

本发明上述实施例中,根据并行任务对应的计算量、数据量以及算法复杂度,可对计算节点在执行当前并行任务时需要的资源大小(比如,内存资源大小、IO资源大小、硬盘资源大小以及CPU资源大小)进行量化,对应的计算节点在执行当前并行任务时,可根据量化的资源大小配置虚拟机,以通过该虚拟机来执行当前并行任务,避免并行任务耗费当前计算节点的大量资源。

应当理解的是,在量化的资源不能满足执行当前并行任务时,可对当前计算节点中的虚拟机进行动态扩容,不必在当前计算节点中kill掉运行的并行任务。

进一步的,由于将同一个计算过程拆分为多个可并行执行的并行任务时,可能导致同一个计算过程下的一个或多个并行任务出现数据倾斜,比如,因该计算过程中key值分布不均匀,导致该计算过程中出现单点数据过度集中,该计算过程下的一个或多个并行任务对应的数据量过大,同时,并行任务中也可能存在部分不能套用分布式计算模型的复杂度较高的挖掘算法,也可能导致并行任务的执行时间过长,因此,为了方便对存在数据倾斜的并行任务进行优先处理,同时方便为其分配更多的计算资源,尽可能的减小当前计算过程对应的计算时长,本发明一个实施例中,所述资源需求信息至少包括如下三种申请信息:内存资源申请信息、IO资源申请信息及CPU资源申请信息;还包括:

A1:将每一个所述并行任务分别对应的内存资源申请信息的权重、IO资源申请信息的权重以及CPU资源申请信息的权重均置为1;

A2:根据每一个所述并行任务分别对应的计算量、数据量以及算法复杂度,确定是否存在至少一个目标并行任务出现数据倾斜,如果是,则将所述目标并行任务对应的内存资源申请信息的权重、IO资源申请信息的权重以及CPU资源申请信息的权重均加1,然后执行步骤A3;否则,执行步骤A3;

A3:将每一个所述数据密集型并行任务分别对应的内存资源申请信息的权重、IO资源申请信息的权重加1,以及将每一个所述计算密集型并行任务分别对应的CPU资源申请信息的权重加1;

所述根据每一个所述计算密集型并行任务分别对应的资源需求信息,将每一个所述计算密集型并行任务分别分配给所述至少一个计算优先型计算节点,并根据每一个所述数据密集型并行任务分别对应的资源需求信息,将每一个所述数据密集型并行任务分别分配给所述至少一个存储优先型计算节点,包括:根据每一个所述计算密集型并行任务分别对应的内存资源申请信息、IO资源申请信息、CPU资源申请信息以及当前计算密集型并行任务对应的CPU资源申请信息的权重,将每一个所述计算密集型并行任务分别分配给所述至少一个计算优先型计算节点,并根据每一个所述数据密集型并行任务分别对应的内存资源申请信息、IO资源申请信息、CPU资源申请信息以及当前数据密集型并行任务对应的内存资源申请信息的权重、IO资源申请信息的权重,将每一个所述数据密集型并行任务分别分配给所述至少一个存储优先型计算节点。

举例来说,当目标计算任务被拆分为具备时间顺序的计算过程job1和计算过程job2,计算过程job1被拆分为task1、task2、task3和task4等四个并行任务,且task1和task2分别对应的计算量相对较高,而数据量相对较少,task3和task4分别对应的计算量相对较少,而数据量相对较高时,即task1和task2分别被确定为计算密集型并行任务,而task3和task4分别被确定为数据密集型并行任务时;首先将task1、task2、task3和task4等四个并行任务分别对应的内存资源申请信息的权重、IO资源申请信息的权重以及CPU资源申请信息的权重均置为1,当task1对应的计算量远高于task2、task3和task4时、task1对应的数据量远高于task2、task3和task4时、或者task1对应的算法复杂度远高于task2、task3和task4时,则可对task1对应内存资源申请信息的权重、IO资源申请信息的权重以及CPU资源申请信息均进行加1处理;之后,将task3和task4分别对应的内存资源申请信息的权重、IO资源申请信息的权重加1,以及将task1和tsk2分别对应的CPU资源申请信息的权重加1;如此,使得task1、task2、task3和task4分别对应的内存资源申请信息的权重、IO资源申请信息的权重以及CPU资源申请信息的权重为:task1——(2,2,3);task2——(1,1,2);task3——(2,2,1);task4——(2,2,1);如此,在将task1、task2、task3和task4等四个并行任务分配给计算节点的过程中,则可结合task1、task2、task3和task4分别对应的内存资源申请信息、IO资源申请信息、CPU资源申请信息,优先分配task1至性能最优的计算优先型计算节点,然后将task2分配至相应的计算优先型计算节点,以及将task3和task4分别分配至相应的存储优先型计算节点。

综上所述,通过将存在数据倾斜的并行任务优先分配至性能最优的相应计算优先型计算节点或存储优先型计算节点,使得存在数据倾斜的并行任务可在多个并行任务中被分布式计算模型中相应计算节点首先开始处理的同时,对应的计算节点还可以给予存在数据倾斜的并行任务更多的资源支持。

进一步的,本发明一个实施例中,还包括:

在当前计算过程不可被解析为至少两个并行任务时,解析当前计算过程,以确定当前计算过程对应的计算量、数据量以及算法复杂度;

根据当前计算过程对应的计算量、数据量以及算法复杂度确定当前计算过程的类型为数据密集型或计算密集型;

在当前计算过程的类型为数据密集型时,将当前计算过程分配给所述至少一个存储优先型计算节点;或,在当前计算过程的类型为计算密集型时,将当前计算过程分配给所述至少一个计算优先型计算节点。

本发明上述实施例中,针对不能拆分为多个并行任务的计算过程,首先对其进行解析以确定其对应的计算量、数据量以及算法复杂度,并根据当前计算过程对应的计算量、数据量以及算法复杂度确定当前计算过程的类型为数据密集型或计算密集型,有针对性的根据当前计算过程的类型将其分配至对应类型的计算节点,使得对应类型的计算节点能够为计算过程给予足够的资源支持,避免计算节点因不能满足分配到的并行任务的计算需求或存储需求而频繁kill及重启并行任务,进一步减小目标计算任务的计算时长。

为了更清楚的说明本发明提供的技术方案的目的及优点,如图2所示,本发明实施例提供了另一种任务分配方法,可以包括如下各个步骤:

步骤201,获取外部分布式计算模型中计算节点A、B、C、D分别对应的资源信息。

步骤202,根据计算节点A、B、C、D分别对应的资源信息将计算节点A、B、C、D分别确定为计算优先型计算节点或存储优先型计算节点。

举例来说,根据计算节点A、B、C、D分别对应的资源信息将计算节点A、B、C、D分别确定为数据优先型计算节点或计算优先型计算节点时,如果计算节点A和B分别对应的资源信息反应出CPU效能相对于硬盘、内存的效能较高,计算节点A和B在执行计算任务时,大部分的状况下应当是CPU在等待硬盘及内存的读写,则可将计算节点A和B确定为计算优先型计算节点;相反的,如果计算节点C和D对应的资源信息反应出CPU效能相对于硬盘、内存的效能较低,计算节点C和D在执行计算任务时,大部分的状况下应当是CPU占用率达到100%,硬盘及内存的读写在极短的时间内即可完成而出现IO空闲,则可将计算节点C和D确定为存储优先型计算节点。

步骤203,获取目标计算任务Application。

步骤204,将Application解析为具备时间顺序的两个计算过程job1和job2。

步骤205,将job1解析为并行任务tast1、tast2、tast3和tast4。

步骤206,分别解析tast1、tast2、tast3和tast4,以确定tast1、tast2、tast3 和tast4分别对应的计算量、数据量及算法复杂度。

步骤207,根据tast1、tast2、tast3和tast4分别对应的计算量、数据量及算法复杂度,将tast1、tast2、tast3和tast4分别确定为数据密集型并行任务或计算密集型并行任务。

举例来说,当task1和task2分别对应的计算量相对较高,而数据量相对较少,task3和task4分别对应的计算量相对较少,而数据量相对较高时,则可将task1和task2分别被确定为计算密集型并行任务,以及将task3和task4分别被确定为数据密集型并行任务。

步骤208,根据tast1、tast2、tast3以及tast4分别对应的计算量、数据量及算法复杂度,确定tast1、tast2、tast3以及tast4分别对应的内存资源申请信息、IO资源申请信息及CPU资源申请信息。

这里,即实现预先对相应计算节点在执行对应的并行任务时需要的资源进行量化,比如量化当前并行任务对应的内存资源大小、IO资源大小、硬盘资源大小以及CPU资源大小等,对应的计算节点在执行当前并行任务时,可根据量化的资源大小配置虚拟机,以通过该虚拟机来执行当前并行任务,避免并行任务耗费当前计算节点的大量资源。

步骤209,将tast1、tast2、tast3和tast4分别对应的内存资源申请信息的权重、IO资源申请信息的权重以及CPU资源申请信息的权重均置为1。

步骤210,根据tast1、tast2、tast3和tast4分别对应的计算量、数据量及算法复杂度确定tast1、tast2、tast3和tast4中是否存在目标并行任务出现数据倾斜,如果是,则执行步骤211;否则,执行步骤212。

步骤211,将目标并行任务task1对应的内存资源申请信息的权重、IO资源申请信息的权重以及CPU资源申请信息的权重均加1。

举例来说,在步骤209至步骤211中,步骤209首先将task1、task2、task3和task4等四个并行任务分别对应的内存资源申请信息的权重、IO资源申请信息的权重以及CPU资源申请信息的权重均置为1,当步骤210中判断出task1对应的计算量远高于task2、task3和task4时、task1对应的数据量远高于task2、task3和task4时、或者task1对应的算法复杂度远高于task2、task3和task4时,则可通过步骤211对task1对应的内存资源申请信息的权重、IO资源申请信息的权重以及CPU资源申请信息均进行加1处理。

步骤212,将task3和task4分别对应的内存资源申请信息的权重、IO资源申请信息的权重加1,以及将task1和task2分别对应的CPU资源申请信息的权重加1。

本发明实施例中,通过步骤209至步骤212对task1、task2、task3和task4分别对应的内存资源申请信息的权重、IO资源申请信息的权重以及CPU资源申请信息的权重进行相应的配置及修正处理之后,task1、task2、task3和task4分别对应的内存资源申请信息的权重、IO资源申请信息的权重以及CPU资源申请信息的权重为:

task1——(2,2,3);

task2——(1,1,2);

task3——(2,2,1);

task4——(2,2,1)。

步骤213,根据task1、task2、task3个task4分别对应的内存资源申请信息、IO资源申请信息、CPU资源申请信息,以及task1和task2分别对应的CPU资源申请信息的权重,将task1分配给计算节点A,将task2分配给计算节点A或B,并将task3和task4分配给计算节点C和/或计算节点D。

通过上述各个步骤,一方面,针对同一个计算过程下的多个并行任务,将计算密集型任务tast1和tast2分配给计算性能较好的计算优先型计算节点A和B,并将数据密集型任务tast3和tast4分配给存储性能较好的存储优先型计算节点C和D,避免分布式计算模型中的计算节点因不能满足分配到的并行任务的计算需求或存储需求而频繁kill及重启并行任务,可减小目标计算任务的计算时长;另一方面,针对计算密集型任务tast1和tast2,可将存在数据倾斜的目标并行任务tast1优先分配给计算性能最好的计算优先型计算节点A,计算节点A能够为tast1给予足够的支援支持,提高tast1的执行速度,减少job1的计算时长;再一方面,可根据量化的内存资源申请信息、IO资源申请信息以及CPU资源申请信息将tast1、tast2、tast3和tast4选择性分配至对应的计算节点,计算节点在执行当前并行任务时,可根据量化的资源配置虚拟机,以通过该虚拟机来执行当前并行任务,避免并行任务耗费当前计算节点的大量资源。

步骤214,解析job2,以确定job2对应的计算量、数据量及算法复杂度。

步骤215,根据job2对应的计算量、数据量及算法复杂度确定job2的类型为计算优先型或存储优先型。

步骤216,在job2的类型为数据密集型时,将job2分配给计算节点C;在job2的类型为计算密集型时,将job2分配给计算节点A。

如图3所示,本发明实施例提供了一种任务分配装置,包括:

节点管理模块301,用于获取外部分布式计算模型中每一个计算节点分别对应的资源信息,根据每一个计算节点分别对应的资源信息将当前计算节点确定为计算优先型计算节点或存储优先型计算节点;

获取模块302,用于获取目标计算任务,将所述目标计算任务解析为具备时间顺序的至少两个计算过程;

第一解析模块303,用于按顺序解析所述至少两个计算过程,在当前计算过程可以被解析为至少两个并行任务时,将当前计算过程解析为至少两个并行任务;

第二解析模块304,用于解析每一个所述并行任务,以确定每一个所述并行任务分别对应的属性信息;

确定模块305,用于根据每一个所述并行任务分别对应的属性信息,将当前并行任务确定为数据密集型并行任务或计算密集型并行任务;

任务处理模块306,用于将每一个所述计算密集型并行任务分别分配给所述至少一个计算优先型计算节点,并将每一个所述数据密集型并行任务分别分配给所述至少一个存储优先型计算节点。

进一步的,为了方便对并行任务的任务类型进行确定,以及确定同一个计算过程下的多个并行任务是否存在一个或多个并行任务发生数据倾斜,本发明一个实施例中,所述第二解析模块304,用于解析每一个所述并行任务,以确定每一个所述并行任务分别对应的计算量、数据量以及算法复杂度。

进一步的,为了节约资源,如图4所示,本发明一个实施例中,还包括:

量化处理模块401,用于根据每一个所述并行任务分别对应的计算量、数据量以及算法复杂度确定每一个所述并行任务分别对应的资源需求信息;

所述任务处理模块306,用于根据每一个所述计算密集型并行任务分别对应的资源需求信息,将每一个所述计算密集型并行任务分别分配给所述至少一个计算优先型计算节点,并根据每一个所述数据密集型并行任务分别对应的资源需求信息,将每一个所述计算密集型并行任务分别分配给所述至少一个存储优先型计算节点。

进一步的,为了方便对存在数据倾斜的并行任务进行优先处理,同时方便为其分配更多的计算资源,尽可能的减小当前计算过程对应的计算时长,如图5所示,本发明一个实施例中,还包括:权重配置模块501、判断模块502、第一修正模块503以及第二修正模块504;其中,

所述权重配置模块501,用于将每一个所述并行任务分别对应的内存资源申请信息的权重、IO资源申请信息的权重以及CPU资源申请信息的权重均置为1;

判断模块502,用于根据每一个所述并行任务分别对应的计算量、数据量以及算法复杂度,确定是否存在至少一个目标并行任务出现数据倾斜,如果是,则触发所述第一修正模块503;否则,触发所述第二修正模块504;

所述第一修正模块503,用于在所述判断模块502的触发下,将所述目标并行任务对应的内存资源申请信息的权重、IO资源申请信息的权重以及CPU资源申请信息的权重均加1,然后触发所述第二修正模块504;

所述第二修正模块504,用于在所述判断模块502或所述第一修正模块501的触发下,将每一个所述数据密集型并行任务分别对应的内存资源申请信息的权重、IO资源申请信息的权重加1,以及将每一个所述计算密集型并行任务分别对应的CPU资源申请信息的权重加1;

所述任务处理模块306,用于用于根据每一个所述计算密集型并行任务分别对应的内存资源申请信息、IO资源申请信息、CPU资源申请信息以及当前计算密集型并行任务对应的CPU资源申请信息的权重,将每一个所述计算密集型并行任务分别分配给所述至少一个计算优先型计算节点,并根据每一个所述数据密集型并行任务分别对应的内存资源申请信息、IO资源申请信息、CPU资源申请信息以及当前数据密集型并行任务对应的内存资源申请信息的权重、IO资源申请信息的权重,将每一个所述数据密集型并行任务分别分配给所述至少一个存储优先型计算节点。

本发明一个实施例中,所述第二解析模块304,进一步用于在当前计算过程不可被解析为至少两个并行任务时,解析当前计算过程,以确定当前计算过程对应的计算量、数据量以及算法复杂度;

所述确定模块305,进一步用于根据当前计算过程对应的计算量、数据量以及算法复杂度确定当前计算过程的类型为数据密集型或计算密集型;

所述任务处理模块306,进一步用于在当前计算过程的类型为数据密集型时,将当前计算过程分配给所述至少一个存储优先型计算节点;或,在当前计算过程的类型为计算密集型时,将当前计算过程分配给所述至少一个计算优先型计算节点。

上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。

综上所述,本发明各个实施例至少具有如下有益效果:

1、本发明一实施例中,首先获取外部分布式计算模型中每一个计算节点分别对应的资源信息,以根据获取的资源信息将每一个计算节点分别确定为计算优先型计算节点或存储优先型计算节点,在获取目标任务并将其拆分为具备时间顺序的多个计算过程之后,即可按顺序将可拆分的计算过程拆分为多个可并行执行的并行任务,进而确定每一个并行任务的属性信息,根据当前并行任务的属性信息将当前并行任务确定为数据密集型并行任务或计算密集型并行任务,之后,则将每一个计算密集型并行任务分别分配给计算优先型计算节点,并将每一个数据密集型并行任务分别分配给存储优先型计算节点;综上可见,通过将计算密集型任务分配给计算性能较好的计算优先型计算节点,并将数据密集型任务分配给存储性能较好的存储优先型计算节点,避免分布式计算模型中的计算节点因不能满足分配到的并行任务的计算需求或存储需求而频繁kill及重启并行任务,可减小目标计算任务的计算时长。

2、本发明一实施例中,根据并行任务对应的计算量、数据量以及算法复杂度,可对计算节点在执行当前并行任务时需要的资源大小(比如,内存资源大小、IO资源大小、硬盘资源大小以及CPU资源大小)进行量化,对应的计算节点在执行当前并行任务时,可根据量化的资源大小配置虚拟机,以通过该虚拟机来执行当前并行任务,避免并行任务耗费当前计算节点的大量资源。

3、本发明一实施例中,针对存在数据倾斜的并行任务,对其行优先处理,根据当前并行任务所述的计算类型,优先分配至性能最优的相应计算优先型计算节点或存储优先型计算节点,使得存在数据倾斜的并行任务可在多个并行任务中被分布式计算模型中相应计算节点首先开始处理的同时,对应的计算节点还可以给予存在数据倾斜的并行任务更多的资源支持,尽可能的减小当前计算过程对应的计算时长。

需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个〃·····”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。

最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

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