任务的分配方法、装置及电子设备与流程

未命名 09-22 阅读:65 评论:0


1.本技术涉及大数据处理技术领域,尤其涉及一种任务的分配方法、装置及电子设备。


背景技术:

2.随着大数据技术的飞速发展,对数据进行处理和分析成为已成为必不可少的步骤,在数据进行处理和分析的过程中,大量的处理及分析任务会分配到不同的节点上,以提高任务的处理及分析效率。
3.现有技术中,在对任务进行分配时,通常是通过轮询分配算法、就近分配算法或随机分配算法中的一种或多种,从多个节点中确定出目标节点,然后将任务对应分配到目标节点中,由目标节点运行该任务。
4.但是现有技术进行任务对应分配的方式容易导致不同节点运行任务的时间不够均衡,降低了对节点资源的利用率。


技术实现要素:

5.本技术提供一种任务的分配方法、装置及电子设备,用以解决现有技术进行分配的方式容易导致不同节点运行任务的时间不够均衡,降低了对节点资源的利用率问题。
6.第一方面,本技术提供一种任务的分配方法,包括:
7.获取待运行spark任务的分配请求;
8.根据所述分配请求,基于预设的分配算法,确定运行所述待运行spark任务的候选节点;
9.获取每个候选节点当前运行的spark任务的参数信息;
10.对于任意一个候选节点,基于预设的任务执行时间预测算法及所述候选节点当前运行的spark任务的参数信息,计算所述候选节点当前运行的spark任务的任务执行预测时间;
11.根据所述候选节点中每个候选节点当前运行的spark任务的任务执行预测时间和/或当前运行的spark任务占用的资源信息,从所述候选节点中确定运行所述待运行spark任务的目标节点。
12.可选的,所述根据所述分配请求,基于预设的分配算法,确定运行所述待运行spark任务的候选节点,包括:
13.根据所述分配请求,基于预设的亲和性或反亲和性分配算法,确定运行所述待运行spark任务的第一候选节点;
14.根据所述第一候选节点中每个候选节点的资源限制信息,从所述第一候选节点中确定运行所述待运行spark任务的第二候选节点。
15.可选的,所述参数信息至少包括:执行器数量、每个执行器的核数量、分区数量、数据倾斜度系数、计算倾斜度系数、任务计算总时间、shuffle总时间、垃圾回收时间;
16.所述对于任意一个候选节点,基于预设的任务执行时间预测算法及所述候选节点当前运行的spark任务的参数信息,计算所述候选节点当前运行的spark任务的任务执行预测时间,包括:
17.对于任意一个候选节点,根据所述候选节点当前运行的spark任务的执行器数量及每个执行器的核数量,确定所述当前运行的spark任务的任务并行度;
18.根据所述任务并行度、分区数量、数据倾斜度系数及计算倾斜度系数,确定所述当前运行的spark任务的任务有效并行度;
19.根据所述任务有效并行度、任务计算总时间、shuffle总时间及垃圾回收总时间,确定所述当前运行的spark任务的任务执行预测时间。
20.可选的,根据所述候选节点中每个候选节点当前运行的spark任务的任务执行预测时间和当前运行的spark任务占用的资源信息,从所述候选节点中确定运行所述待运行spark任务的目标节点,包括:
21.根据所述候选节点中每个候选节点当前运行的spark任务占用的资源信息,确定每个候选节点的剩余资源信息;
22.根据所述候选节点中每个候选节点当前运行的spark任务的任务执行预测时间及当前已运行时间,确定每个候选节点运行完当前运行的spark任务的结束时间,并根据结束时间的早晚进行优先级排序;
23.获取每个候选节点运行完当前运行的spark任务释放的资源信息;
24.将每个候选节点的剩余资源信息与运行完当前运行的spark任务释放的资源信息进行相加处理,得到每个节点的可用资源信息;
25.按照所述优先级排序,将可用资源信息最高的候选节点确定为所述目标节点。
26.可选的,根据所述候选节点中每个候选节点当前运行的spark任务的任务执行预测时间,从所述候选节点中确定运行所述待运行spark任务的目标节点,包括:
27.根据所述候选节点中每个候选节点当前运行的spark任务的任务执行预测时间及当前已运行时间,确定最早结束当前运行的spark任务的节点;
28.将所述最早结束当前运行的spark任务的节点确定为所述目标节点。
29.可选的,根据所述当前运行的spark任务占用的资源信息,从所述候选节点中确定运行所述待运行spark任务的目标节点,包括:
30.根据所述候选节点中每个候选节点当前运行的spark任务占用的资源信息,确定剩余资源信息最多的节点;
31.将所述剩余资源信息最多的节点确定为所述目标节点。
32.可选的,所述从所述候选节点中确定运行所述待运行spark任务的目标节点之后,还包括:
33.判断所述待运行spark任务是否发布至所述目标节点;
34.若未发布至所述目标节点,重新执行所述根据所述候选节点中每个候选节点当前运行的spark任务的任务执行预测时间和/或当前运行的spark任务占用的资源信息,从所述候选节点中确定分配所述待运行spark任务的目标节点的步骤。
35.可选的,还包括:
36.若发布至所述目标节点,判断所述目标节点是否成功运行所述待运行spark任务;
37.若未成功运行所述待运行spark任务,输出运行错误的提示信息;
38.若成功运行所述待运行spark任务,响应于用户的操作,对所述预设的任务执行时间预测算法进行参数修正。
39.第二方面,本技术提供一种任务的分配装置,包括:
40.获取模块,用于获取待运行spark任务的分配请求;
41.确定模块,用于根据所述分配请求,基于预设的分配算法,确定运行所述待运行spark任务的候选节点;
42.所述获取模块,还用于获取每个候选节点当前运行的spark任务的参数信息;
43.计算模块,用于对于任意一个候选节点,基于预设的任务执行时间预测算法及所述候选节点当前运行的spark任务的参数信息,计算所述候选节点当前运行的spark任务的任务执行预测时间;
44.处理模块,用于根据所述候选节点中每个候选节点当前运行的spark任务的任务执行预测时间和/或当前运行的spark任务占用的资源信息,从所述候选节点中确定运行所述待运行spark任务的目标节点。
45.第三方面,本技术提供一种电子设备,包括:至少一个处理器、存储器;
46.所述存储器存储计算机执行指令;
47.所述至少一个处理器执行所述存储器存储的计算机执行指令来执行第一方面任一项所述的任务的分配方法。
48.第四方面,本技术实施例提供一种可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现第一方面任一项所述的任务的分配方法。
49.本技术提供的一种任务的分配方法、装置及电子设备,通过获取待运行spark任务的分配请求,根据该分配请求,基于预设的分配算法,确定运行待运行spark任务的候选节点。获取每个候选节点当前运行的spark任务的参数信息,对于任意一个候选节点,基于预设的任务执行时间预测算法及候选节点当前运行的spark任务的参数信息,计算候选节点当前运行的spark任务的任务执行预测时间,进而根据候选节点中每个候选节点当前运行的spark任务的任务执行预测时间和/或当前运行的spark任务占用的资源信息,从候选节点中确定运行待运行spark任务的目标节点。本技术的方法,通过基于预设的任务执行时间预测算法计算计算候选节点当前运行的spark任务的任务执行预测时间,并根据任务执行预测时间和/或当前运行的spark任务占用的资源信息确定目标节点的方式,使得不同节点运行任务的时间更加均衡,提高了对节点的资源的利用率。
附图说明
50.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。
51.图1为本技术提供的一种应用场景示意图;
52.图2为本技术实施例提供的一种任务的分配方法的流程示意图;
53.图3为本技术实施例提供的一种确定运行待运行spark任务的候选节点的方法的流程示意图;
54.图4a为本技术实施例提供的一种确定运行待运行spark任务的目标节点的方法的流程示意图;
55.图4b为本技术实施例提供的又一种确定运行待运行spark任务的目标节点的方法的流程示意图;
56.图4c为本技术实施例提供的再一种确定运行待运行spark任务的目标节点的方法的流程示意图;
57.图5为本技术实施例提供的又一种任务的分配的方法的示意图;
58.图6为本技术实施例提供的一种任务的分配装置的结构示意图;
59.图7为本技术实施例提供的一种电子设备的结构示意图。
60.通过上述附图,已示出本技术明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本技术构思的范围,而是通过参考特定实施例为本领域技术人员说明本技术的概念。
具体实施方式
61.这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本技术相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本技术的一些方面相一致的装置和方法的例子。
62.在本技术实施例的描述中,术语“内”、“外”等指示的方向或位置关系的术语是基于附图所示的方向或位置关系,这仅仅是为了便于描述,而不是指示或暗示装置或构件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本技术的限制。
63.此外,还需要说明的是,在本技术实施例的描述中,除非另有明确的规定和限定,术语“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个构件内部的连通。对于本领域技术人员而言,可根据具体情况理解上述术语在本技术实施例中的具体含义。
64.首先对本技术所涉及的名词进行解释:
65.spark:是指一个通用的分布式数据处理引擎,用来构建大型的、低延迟的数据分析应用程序;
66.容器化:是指将软件代码和所需的所有组件(例如库、框架和其他依赖项)打包在一起,隔离“容器”中,容器内的软件或应用可以在任何环境和任何基础架构上一致地移动和运行,不受该环境或基础架构的操作系统影响。
67.大数据处理技术的飞速发展,使得对数据的处理效率提出了更高的要求,对数据进行处理时,可以是对任务进行处理,通过将不同的任务对应分配到不同的节点,能够有效的提高任务的处理效率。
68.容器化技术作为一种云计算技术得到了广泛的应用,它可以将任务及其相关的应用程序、依赖项数据等打包至一个轻量级的、可移植的容器中,从而简化了对任务的管理和部署。
69.其中,spark容器化部署的核心功能之一是对任务进行分配,其可以在集群中分布
式地运行任务,实现任务的高效分配。
70.现有技术中,基于容器化的spark任务,在对spark任务进行分配时,通常是是通过轮询分配算法、就近分配算法或随机分配算法中的一种或多种,从多个节点中确定出目标节点,然后将任务对应分配到目标节点中,由目标节点运行该任务。
71.具体的,
72.轮询分配算法,是将spark任务按照它们的执行时间顺序,依次分配给不同的节点运行。
73.就近分配算法,是根据spark任务当前的执行位置,将spark任务对应分配给距离最近的节点运行。
74.随机分配算法,是随机为spark任务对应分配一个节点运行。
75.但是现有技术进行分配的方式,若一个节点上当前运行的spark任务比较多的情况下,还要运行待运行的spark任务,而另一个节点上当前运行的spark任务比较少,却运行不了待运行的spark任务,容易导致不同节点运行任务的时间不够均衡,降低了对节点的资源的利用率。
76.因此,针对现有技术的上述技术问题,本技术提出一种任务的分配方法、装置及电子设备,通过根据基于预设的分配算法,确定运行待运行spark任务的候选节点,对于任意一个候选节点,基于预设的任务执行时间预测算法计算候选节点当前运行的spark任务的任务执行预测时间,进而根据候选节点中每个候选节点当前运行的spark任务的任务执行预测时间和/或当前运行的spark任务占用的资源信息,从候选节点中确定运行待运行spark任务的目标节点。本技术确定目标节点的方式,使得不同节点运行spark任务的时间更加均衡,提高了对节点的资源的利用率。
77.为了便于理解本技术,下面示例性的说明本技术的一种应用场景。
78.图1为本技术提供的一种应用场景示意图,本技术的执行主体以服务器为例,如图1所示:包括服务器101、节点102、节点103。
79.其中,服务器101:用于将spark任务对应分配到目标节点上。
80.目标节点:用于运行该spark任务。
81.在图1中,可以看出现有技术中确定的目标节点即节点102当前运行的spark任务占用的资源信息较多,而节点103当前运行的spark任务占用的资源信息较少,资源信息可以是cpu资源、内存资源等。若继续向节点102分配spark任务,容易造成节点103资源的浪费,且节点103运行的任务执行结束后节点102还在执行任务,使得节点102和节点103运行任务的执行时间也不够均衡。
82.本技术通过基于预设的任务执行时间预测算法计算计算候选节点当前运行的spark任务的任务执行预测时间,并根据任务执行预测时间和/或当前运行的spark任务占用的资源信息确定目标节点的方式,可以将节点103确定为目标节点,提高了节点103的资源的利用率,且使得节点102和节点103运行的任务的执行时间更加均衡。
83.可以理解的是,本技术中不对应用场景中的服务器、节点的数量、形态、功能及交互方式等进行限定,也不对资源信息及任务的类型、功能等进行限定,上述场景仅用于举例说明,在方案的具体应用中,可以根据实际的需求进行设定。
84.下面以具体地实施例对本技术的技术方案以及本技术的技术方案如何解决上述
技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本技术的实施例进行描述。
85.图2为本技术实施例提供的一种任务的分配方法的流程示意图,该方法的执行主体可以为分配功能的终端,例如,可以为服务器、服务器集群、个人计算机、笔记本电脑、智能手机、平板电脑、便携式可穿戴设备等。本实施例中的方法可以通过软件、硬件或者软硬件结合的方式来实现。如图2所示,该方法具体包括以下步骤:
86.s201、获取待运行spark任务的分配请求。
87.响应于用户的操作,获取待运行spark任务的分配请求,该分配请求用于对spark任务进行分配,以确定运行该spark任务的节点。
88.在分配请求中包括但不限于:运行spark任务所需的内存资源、cpu资源、spark任务的标识信息、属性信息等。
89.s202、根据分配请求,基于预设的分配算法,确定运行待运行spark任务的候选节点。
90.可选的,图3为本技术实施例提供的一种确定运行待运行spark任务的候选节点的方法的流程示意图,如图3所示,包括以下步骤:
91.s301、根据分配请求,基于预设的亲和性或反亲和性分配算法,确定运行待运行spark任务的第一候选节点。
92.待运行spark任务封装在容器中,多个节点都可以运行该容器,通过预设的亲和性或反亲和性分配算法,可以确定出运行该容器的节点的集合,从集合中确定出运行待运行spark任务的第一候选节点。
93.若集合中仅包括一个节点,则将该待运行spark任务对应分配至该节点,若集合中没有节点,则分配失败。
94.其中,亲和性算法可以表示容器与节点之间的亲和关系,即可以将一组业务紧密的容器分配至同一个或同一组节点中。
95.反亲和性算法可以表示容器与节点之间的反亲和关系,即尽量不将一组业务紧密的容器分配至同一个或同一组节点中。
96.s302、根据第一候选节点中每个候选节点的资源限制信息,从第一候选节点中确定运行待运行spark任务的第二候选节点。
97.步骤s301中确定出的第一候选节点仅可以表明这些节点具有运行该待运行spark任务的可能性,并非必须。这是因为,每个候选节点的资源是有限制的,资源并不相同,其中,资源例如可以为cpu资源、内存资源等,若待运行spark任务所需的资源超过节点的资源,则节点无法运行该待运行spark任务。
98.因此,根据第一候选节点中每个候选节点的资源限制信息,可以从第一候选节点中可以确定出运行该容器的节点的集合,从集合中确定出运行待运行spark任务的第二候选节点。
99.若集合中仅包括一个节点,则将该待运行spark任务对应分配至该节点,若集合中没有节点,则分配失败。
100.s203、获取每个候选节点当前运行的spark任务的参数信息。
101.其中,参数信息包括但不限于:执行器数量、每个执行器的核数量、分区数量、数据
倾斜度系数、计算倾斜度系数、任务计算总时间、shuffle总时间、垃圾回收时间。
102.s204、对于任意一个候选节点,基于预设的任务执行时间预测算法及候选节点当前运行的spark任务的参数信息,计算候选节点当前运行的spark任务的任务执行预测时间。
103.具体的,
104.对于任意一个候选节点,根据候选节点当前运行的spark任务的执行器数量及每个执行器的核数量,确定当前运行的spark任务的任务并行度。
105.示例性的,根据如下公式确定当前运行的spark任务的任务并行度:
106.任务并行度≈执行器executor数量
×
每个执行器executor的核core数量。
107.根据任务并行度、分区数量、数据倾斜度系数及计算倾斜度系数,确定当前运行的spark任务的任务有效并行度。
108.示例性的,根据如下公式确定当前运行的spark任务的任务有效并行度:
[0109][0110]
根据任务有效并行度、任务计算总时间、shuffle总时间及垃圾回收总时间,确定当前运行的spark任务的任务执行预测时间。
[0111]
示例性的,根据如下公式确定当前运行的spark任务的任务执行预测时间:
[0112][0113]
s205、根据候选节点中每个候选节点当前运行的spark任务的任务执行预测时间和/或当前运行的spark任务占用的资源信息,从候选节点中确定运行待运行spark任务的目标节点。
[0114]
一种可能的实现方式是:根据候选节点中每个候选节点当前运行的spark任务的任务执行预测时间,从候选节点中确定运行待运行spark任务的目标节点。
[0115]
又一种可能的实现方式是:根据候选节点中每个候选节点当前运行的spark任务占用的资源信息,从候选节点中确定运行待运行spark任务的目标节点。
[0116]
再一种可能的实现方式是:根据候选节点中每个候选节点当前运行的spark任务的任务执行预测时间和当前运行的spark任务占用的资源信息,从候选节点中确定运行待运行spark任务的目标节点。
[0117]
在本技术的上述实施例中,通过获取待运行spark任务的分配请求,根据该分配请求,基于预设的分配算法,确定运行待运行spark任务的候选节点。获取每个候选节点当前运行的spark任务的参数信息,对于任意一个候选节点,基于预设的任务执行时间预测算法及候选节点当前运行的spark任务的参数信息,计算候选节点当前运行的spark任务的任务执行预测时间,进而根据候选节点中每个候选节点当前运行的spark任务的任务执行预测时间和/或当前运行的spark任务占用的资源信息,从候选节点中确定运行待运行spark任务的目标节点。本技术的方法,通过基于预设的任务执行时间预测算法计算计算候选节点当前运行的spark任务的任务执行预测时间,并根据任务执行预测时间和/或当前运行的spark任务占用的资源信息确定目标节点的方式,使得不同节点运行任务的时间更加均衡,
提高了对节点的资源的利用率。
[0118]
进一步的,在上述实施例的基础之上,通过下方的实施例,详细的说明根据候选节点中每个候选节点当前运行的spark任务的任务执行预测时间和/或当前运行的spark任务占用的资源信息,从候选节点中确定运行待运行spark任务的目标节点的过程。
[0119]
图4a为本技术实施例提供的一种确定运行待运行spark任务的目标节点的方法的流程示意图,如图4a所示,该方法包括以下步骤:
[0120]
s401、根据候选节点中每个候选节点当前运行的spark任务占用的资源信息,确定每个候选节点的剩余资源信息。
[0121]
由于每个候选节点的总资源是有限的,根据每个候选节点当前运行的spark任务占用的资源信息,将总资源减去当前占用的资源信息,可以得到每个候选节点的剩余资源信息。
[0122]
s402、根据候选节点中每个候选节点当前运行的spark任务的任务执行预测时间及当前已运行时间,确定每个候选节点运行完当前运行的spark任务的结束时间,并根据结束时间的早晚进行优先级排序。
[0123]
其中,当前已运行时间,可以通过当前运行的spark任务的创建时间和当前的时间确定。
[0124]
确定出每个候选节点当前运行的spark任务的当前已运行时间后,根据上述步骤s104确定出的任务执行预测时间,可以确定出每个候选节点运行完当前运行的spark任务的结束时间,并将结束时间根据时间早晚进行优先级排序。
[0125]
s403、获取每个候选节点运行完当前运行的spark任务释放的资源信息。
[0126]
每个候选节点运行完当前运行的spark任务后,会对该spark任务占用的资源进行释放,因此,可以获取到每个候选节点运行完当前运行的spark任务释放的资源信息。
[0127]
s404、将每个候选节点的剩余资源信息与运行完当前运行的spark任务释放的资源信息进行相加处理,得到每个节点的可用资源信息。
[0128]
s405、按照优先级排序,将可用资源信息最高的候选节点确定为目标节点。
[0129]
将每个候选节点的剩余资源信息与释放后的资源信息进行相加,得到每个节点的可用资源信息。进而根据上述的优先级排序,将可用资源信息最高的候选节点确定为目标节点。
[0130]
图4b为本技术实施例提供的又一种确定运行待运行spark任务的目标节点的方法的流程示意图,如图4b所示,该方法包括以下步骤:
[0131]
s501、根据候选节点中每个候选节点当前运行的spark任务的任务执行预测时间及当前已运行时间,确定最早结束当前运行的spark任务的节点。
[0132]
s502、将最早结束当前运行的spark任务的节点确定为目标节点。
[0133]
图4c为本技术实施例提供的再一种确定运行待运行spark任务的目标节点的方法的流程示意图,如图4c所示,该方法包括以下步骤:
[0134]
s601、根据候选节点中每个候选节点当前运行的spark任务占用的资源信息,确定剩余资源信息最多的节点。
[0135]
s602、将剩余资源信息最多的节点确定为目标节点。
[0136]
具体的相同的实现步骤请参见上述图4a中的实施例,本技术不在重复赘述。
[0137]
在本技术的上述实施例中,通过根据候选节点中每个候选节点当前运行的spark任务的任务执行预测时间和/或当前运行的spark任务占用的资源信息,从候选节点中确定运行待运行spark任务的目标节点的方法,提高了节点资源的利用率。
[0138]
更进一步的,上述任一实施例的基础之上,通过下方的示例,简要的说明本技术的任务的分配方法。图5为本技术实施例提供的又一种任务的分配的方法的示意图,如图5所示,该方法包括以下步骤:
[0139]
s701、基于预设的亲和性或反亲和性分配算法,确定运行待运行spark任务的第一候选节点。
[0140]
若第一候选节点只存在一个,则执行步骤s703。若不存在第一候选节点,则开启周期重试机制,重复执行步骤s701。若存在多个第一候选节点则执行步骤s702。
[0141]
s702、根据第一候选节点中每个候选节点的资源限制信息,从第一候选节点中确定运行待运行spark任务的第二候选节点。
[0142]
若第二候选节点存在一个或多个,则执行步骤s703。若不存在第二候选节点,则开启周期重试机制,重复执行步骤s701。
[0143]
s703、基于预设的任务执行时间预测算法及候选节点当前运行的spark任务的参数信息,计算候选节点当前运行的spark任务的任务执行预测时间。
[0144]
s704、根据任务执行预测时间和/或占用的资源信息从第二候选节点中确定运行待运行spark任务的目标节点。
[0145]
若目标节点存在一个或多个,则执行步骤s705。若不存在目标节点,则开启周期重试机制,重复执行步骤s701。
[0146]
s705、将待运行spark任务发布至目标节点。
[0147]
s706、判断待运行spark任务是否发布至目标节点。
[0148]
若未发布至目标节点,则开启重试机制,重新执行根据候选节点中每个候选节点当前运行的spark任务的任务执行预测时间和/或当前运行的spark任务占用的资源信息,从候选节点中确定分配待运行spark任务的目标节点的步骤即s704。
[0149]
s707、若发布至目标节点,判断目标节点是否成功运行待运行spark任务。
[0150]
s708、若未成功运行待运行spark任务,输出运行错误的提示信息。
[0151]
s709、若成功运行待运行spark任务,响应于用户的操作,对预设的任务执行时间预测算法进行参数修正。
[0152]
具体的实现过程及技术效果请参见上述的多个实施例,本技术为避免赘余,不再重复说明。
[0153]
在本技术的上述实施例中,通过基于预设的任务执行时间预测算法计算计算候选节点当前运行的spark任务的任务执行预测时间,并根据任务执行预测时间和/或当前运行的spark任务占用的资源信息确定目标节点的方式,提升了节点的选择效率,提高了节点资源的利用率。建立重试机制,降低了每次提交任务的繁琐和任务执行的失败率,通过对预设的任务执行时间预测算法进行修正,可以使算法更贴合当前的分配环境,得到的任务执行预测时间更加准确。
[0154]
图6为本技术实施例提供的一种任务的分配装置的结构示意图,如图6所示,该装置包括:获取模块601、确定模块602、计算模块603、处理模块604。
[0155]
获取模块601,用于获取待运行spark任务的分配请求。
[0156]
确定模块602,用于根据分配请求,基于预设的分配算法,确定运行待运行spark任务的候选节点。
[0157]
获取模块601,还用于获取每个候选节点当前运行的spark任务的参数信息。
[0158]
计算模块603,用于对于任意一个候选节点,基于预设的任务执行时间预测算法及候选节点当前运行的spark任务的参数信息,计算候选节点当前运行的spark任务的任务执行预测时间。
[0159]
处理模块604,用于根据候选节点中每个候选节点当前运行的spark任务的任务执行预测时间和/或当前运行的spark任务占用的资源信息,从候选节点中确定运行待运行spark任务的目标节点。
[0160]
一种可能的实现方式是,确定模块602,具体用于:
[0161]
根据分配请求,基于预设的亲和性或反亲和性分配算法,确定运行待运行spark任务的第一候选节点。
[0162]
根据第一候选节点中每个候选节点的资源限制信息,从第一候选节点中确定运行待运行spark任务的第二候选节点。
[0163]
一种可能的实现方式是,计算模块603,具体用于:
[0164]
对于任意一个候选节点,根据候选节点当前运行的spark任务的执行器数量及每个执行器的核数量,确定当前运行的spark任务的任务并行度。
[0165]
根据任务并行度、分区数量、数据倾斜度系数及计算倾斜度系数,确定当前运行的spark任务的任务有效并行度。
[0166]
根据任务有效并行度、任务计算总时间、shuffle总时间及垃圾回收总时间,确定当前运行的spark任务的任务执行预测时间。
[0167]
一种可能的实现方式是,处理模块604,具体用于:
[0168]
根据候选节点中每个候选节点当前运行的spark任务占用的资源信息,确定每个候选节点的剩余资源信息。
[0169]
根据候选节点中每个候选节点当前运行的spark任务的任务执行预测时间及当前已运行时间,确定每个候选节点运行完当前运行的spark任务的结束时间,并根据结束时间的早晚进行优先级排序。
[0170]
获取每个候选节点运行完当前运行的spark任务释放的资源信息。
[0171]
将每个候选节点的剩余资源信息与运行完当前运行的spark任务释放的资源信息进行相加处理,得到每个节点的可用资源信息。
[0172]
按照优先级排序,将可用资源信息最高的候选节点确定为目标节点。
[0173]
一种可能的实现方式是,处理模块604,具体用于:
[0174]
根据候选节点中每个候选节点当前运行的spark任务的任务执行预测时间及当前已运行时间,确定最早结束当前运行的spark任务的节点。
[0175]
将最早结束当前运行的spark任务的节点确定为目标节点。
[0176]
一种可能的实现方式是,处理模块604,具体用于:
[0177]
根据候选节点中每个候选节点当前运行的spark任务占用的资源信息,确定剩余资源信息最多的节点。
[0178]
将剩余资源信息最多的节点确定为目标节点。
[0179]
一种可能的实现方式是,该装置还包括判断模块,用于:
[0180]
判断待运行spark任务是否发布至目标节点。
[0181]
若未发布至目标节点,重新执行根据候选节点中每个候选节点当前运行的spark任务的任务执行预测时间和/或当前运行的spark任务占用的资源信息,从候选节点中确定分配待运行spark任务的目标节点的步骤。
[0182]
一种可能的实现方式是,判断模块,还用于:
[0183]
若发布至目标节点,判断目标节点是否成功运行待运行spark任务。
[0184]
若未成功运行待运行spark任务,输出运行错误的提示信息。
[0185]
若成功运行待运行spark任务,响应于用户的操作,对预设的任务执行时间预测算法进行参数修正。
[0186]
本实施例提供的任务的分配装置,用于执行前述的方法实施例,其实现原理与技术效果类似,对此不再赘述。
[0187]
图7为本技术实施例提供的一种电子设备的结构示意图,如图7所示,该设备可以包括:至少一个处理器701和存储器702。
[0188]
存储器702,用于存放程序。具体地,程序可以包括程序代码,程序代码包括计算机操作指令,或者处理器701的可执行指令等。
[0189]
存储器702可能包含高速ram存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
[0190]
处理器701用于执行存储器702存储的计算机执行指令,以实现前述方法任一实施例所描述的方法。其中,处理器701可能是一个中央处理器(central processing unit,简称为cpu),或者是特定集成电路(application specific integrated circuit,简称为asic),或者是被配置成实施本技术实施例的一个或多个集成电路。
[0191]
可选的,该电子设备还可以包括通信接口703。在具体实现上,如果通信接口703、存储器702和处理器701独立实现,则通信接口703、存储器702和处理器701可以通过总线相互连接并完成相互间的通信。总线可以是工业标准体系结构(industry standard architecture,简称为isa)总线、外部设备互连(peripheral component,简称为pci)总线或扩展工业标准体系结构(extended industry standard architecture,简称为eisa)总线等。总线可以分为地址总线、数据总线、控制总线等,但并不表示仅有一根总线或一种类型的总线。
[0192]
可选的,在具体实现上,如果通信接口703、存储器702和处理器701集成在一块芯片上实现,则通信接口703、存储器702和处理器701可以通过内部接口完成通信。
[0193]
本实施例提供的电子设备,用于执行前述实施例执行的任务的分配方法,其实现原理与技术效果类似,对此不再赘述。
[0194]
本技术还提供了一种计算机可读存储介质,该计算机可读存储介质可以包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁盘或者光盘等各种可以存储程序代码的介质,具体的,该计算机可读存储介质中存储有计算机执行指令,计算机执行指令用于上述实施例中任务的分配方法。
[0195]
本技术还提供一种计算机程序产品,该程序产品包括执行指令或计算机程序,该
执行指令或计算机程序存储在可读存储介质中。电子设备的至少一个处理器可以从可读存储介质读取该执行指令,至少一个处理器执行该执行指令使得电子设备实施上述的各种实施方式提供的任务的分配方法。
[0196]
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本技术的其它实施方案。本技术旨在涵盖本技术的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本技术的一般性原理并包括本技术未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本技术的真正范围和精神由下面的权利要求书指出。
[0197]
应当理解的是,本技术并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本技术的范围仅由所附的权利要求书来限制。

技术特征:
1.一种任务的分配方法,其特征在于,包括:获取待运行spark任务的分配请求;根据所述分配请求,基于预设的分配算法,确定运行所述待运行spark任务的候选节点;获取每个候选节点当前运行的spark任务的参数信息;对于任意一个候选节点,基于预设的任务执行时间预测算法及所述候选节点当前运行的spark任务的参数信息,计算所述候选节点当前运行的spark任务的任务执行预测时间;根据所述候选节点中每个候选节点当前运行的spark任务的任务执行预测时间和/或当前运行的spark任务占用的资源信息,从所述候选节点中确定运行所述待运行spark任务的目标节点。2.根据权利要求1所述的方法,其特征在于,所述根据所述分配请求,基于预设的分配算法,确定运行所述待运行spark任务的候选节点,包括:根据所述分配请求,基于预设的亲和性或反亲和性分配算法,确定运行所述待运行spark任务的第一候选节点;根据所述第一候选节点中每个候选节点的资源限制信息,从所述第一候选节点中确定运行所述待运行spark任务的第二候选节点。3.根据权利要求2所述的方法,其特征在于,所述参数信息至少包括:执行器数量、每个执行器的核数量、分区数量、数据倾斜度系数、计算倾斜度系数、任务计算总时间、shuffle总时间、垃圾回收时间;所述对于任意一个候选节点,基于预设的任务执行时间预测算法及所述候选节点当前运行的spark任务的参数信息,计算所述候选节点当前运行的spark任务的任务执行预测时间,包括:对于任意一个候选节点,根据所述候选节点当前运行的spark任务的执行器数量及每个执行器的核数量,确定所述当前运行的spark任务的任务并行度;根据所述任务并行度、分区数量、数据倾斜度系数及计算倾斜度系数,确定所述当前运行的spark任务的任务有效并行度;根据所述任务有效并行度、任务计算总时间、shuffle总时间及垃圾回收总时间,确定所述当前运行的spark任务的任务执行预测时间。4.根据权利要求3所述的方法,其特征在于,根据所述候选节点中每个候选节点当前运行的spark任务的任务执行预测时间和当前运行的spark任务占用的资源信息,从所述候选节点中确定运行所述待运行spark任务的目标节点,包括:根据所述候选节点中每个候选节点当前运行的spark任务占用的资源信息,确定每个候选节点的剩余资源信息;根据所述候选节点中每个候选节点当前运行的spark任务的任务执行预测时间及当前已运行时间,确定每个候选节点运行完当前运行的spark任务的结束时间,并根据结束时间的早晚进行优先级排序;获取每个候选节点运行完当前运行的spark任务释放的资源信息;将每个候选节点的剩余资源信息与运行完当前运行的spark任务释放的资源信息进行相加处理,得到每个节点的可用资源信息;
按照所述优先级排序,将可用资源信息最高的候选节点确定为所述目标节点。5.根据权利要求3所述的方法,其特征在于,根据所述候选节点中每个候选节点当前运行的spark任务的任务执行预测时间,从所述候选节点中确定运行所述待运行spark任务的目标节点,包括:根据所述候选节点中每个候选节点当前运行的spark任务的任务执行预测时间及当前已运行时间,确定最早结束当前运行的spark任务的节点;将所述最早结束当前运行的spark任务的节点确定为所述目标节点。6.根据权利要求3所述的方法,其特征在于,根据所述当前运行的spark任务占用的资源信息,从所述候选节点中确定运行所述待运行spark任务的目标节点,包括:根据所述候选节点中每个候选节点当前运行的spark任务占用的资源信息,确定剩余资源信息最多的节点;将所述剩余资源信息最多的节点确定为所述目标节点。7.根据权利要求1-6任一项所述的方法,其特征在于,所述从所述候选节点中确定运行所述待运行spark任务的目标节点之后,还包括:判断所述待运行spark任务是否发布至所述目标节点;若未发布至所述目标节点,重新执行所述根据所述候选节点中每个候选节点当前运行的spark任务的任务执行预测时间和/或当前运行的spark任务占用的资源信息,从所述候选节点中确定分配所述待运行spark任务的目标节点的步骤。8.根据权利要求7所述的方法,其特征在于,还包括:若发布至所述目标节点,判断所述目标节点是否成功运行所述待运行spark任务;若未成功运行所述待运行spark任务,输出运行错误的提示信息;若成功运行所述待运行spark任务,响应于用户的操作,对所述预设的任务执行时间预测算法进行参数修正。9.一种任务的分配装置,其特征在于,包括:获取模块,用于获取待运行spark任务的分配请求;确定模块,用于根据所述分配请求,基于预设的分配算法,确定运行所述待运行spark任务的候选节点;所述获取模块,还用于获取每个候选节点当前运行的spark任务的参数信息;计算模块,用于对于任意一个候选节点,基于预设的任务执行时间预测算法及所述候选节点当前运行的spark任务的参数信息,计算所述候选节点当前运行的spark任务的任务执行预测时间;处理模块,用于根据所述候选节点中每个候选节点当前运行的spark任务的任务执行预测时间和/或当前运行的spark任务占用的资源信息,从所述候选节点中确定运行所述待运行spark任务的目标节点。10.一种电子设备,其特征在于,包括:至少一个处理器、存储器;所述存储器存储计算机执行指令;所述至少一个处理器执行所述存储器存储的计算机执行指令,使得所述电子设备执行权利要求1至8任一项所述的任务的分配方法。

技术总结
本申请提供一种任务的分配方法、装置及电子设备。通过获取待运行Spark任务的分配请求,根据该请求,基于预设的分配算法确定运行待运行Spark任务的候选节点。获取每个候选节点当前运行的Spark任务的参数信息,对于任意一个候选节点,基于预设的任务执行时间预测算法及候选节点当前运行的Spark任务的参数信息,计算候选节点当前运行的Spark任务的任务执行预测时间,进而根据候选节点中每个候选节点当前运行的Spark任务的任务执行预测时间和/或当前运行的Spark任务占用的资源信息,从候选节点中确定运行待运行Spark任务的目标节点。本申请使得不同节点运行任务的时间更加均衡,提高了节点资源的利用率。高了节点资源的利用率。高了节点资源的利用率。


技术研发人员:亓浩
受保护的技术使用者:联通数字科技有限公司 联通云数据有限公司
技术研发日:2023.06.21
技术公布日:2023/9/20
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

航空商城 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

评论

相关推荐