一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种应用于分布式流数据流引擎的资源设置方法及装置与流程

2022-03-09 01:22:47 来源:中国专利 TAG:


1.本发明实施例涉及计算机技术领域,尤其涉及一种应用于分布式流数据流引擎的资源设置方法、装置、计算设备及计算机可读存储介质。


背景技术:

2.随着数据开发的功能逐渐成熟,实时任务的开发量逐渐增多。目前使用的开源的实时处理数据的计算引擎主要有strom,spark和分布式流数据流引擎flink等。得益于flink在实时领域的成熟度,大部分实时平台的构建都是基于flink。在实际的应用场景中,流引擎客户端接收待处理任务,对待处理任务的算子、并行度、每个tm(taskmanager,任务管理器)总内存、每个tm上的slot个数进行配置,将配置后的任务提交到资源调度器如yarn集群上,yarn集群根据任务的配置为任务分配相应的资源。
3.一般来说,yarn集群会根据每个tm上的slot个数对每个tm的总内存进行均分,这样每个slot会根据均分到的资源执行任务中的相应算子。但是yarn集群的资源是有限的,若为某个任务的算子分配的资源过多,会造成资源的浪费,挤占其他任务的运行资源;若为某个任务的算子分配的资源过少,会导致该任务执行速度较慢。
4.因此,若能对任务的算子的资源进行针对性细粒度的设置,yarn集群就可分配相应大小的资源,如此可以提高资源的利用率。
5.综上,本发明实施例提供一种应用于分布式流数据流引擎的资源设置方法,用以简便快捷地对任务的算子所需的资源进行细粒度的设置,提高进行资源设置的效率。


技术实现要素:

6.本发明实施例提供一种应用于分布式流数据流引擎的资源设置方法,用以简便快捷地对任务的算子所需的资源进行细粒度的设置,提高进行资源设置的效率。
7.第一方面,本发明实施例提供一种应用于分布式流数据流引擎的资源设置方法,包括:
8.流引擎客户端基于接收的待处理任务,生成所述待处理任务的逻辑流图,所述逻辑流图中包括代表用于处理所述待处理任务的各算子的各流节点;
9.所述流引擎客户端从算子资源配置中获取所述逻辑流图中各流节点的资源信息;
10.所述流引擎客户端将所述逻辑流图中具有相同的设定属性的流节点合并为组节点,得到具有各组节点的资源信息的逻辑组图;其中,组节点的资源信息是根据组节点中的流节点的资源信息得到的;
11.所述流引擎客户端将所述逻辑组图提交至资源调度器;所述资源调度器用于根据所述逻辑组图为所述待处理任务分配用于处理所述待处理任务的资源。
12.通过设置算子资源配置,可以简便快捷地对任务的算子所需的资源进行细粒度的资源设置,同时,每次算子资源配置更新后,逻辑流图中各流节点的资源信息也会相应的更新。那么就可实现方便地对逻辑流图中各流节点的资源信息根据需要进行设置,进一步地,
基于更新后的逻辑流图,生成的逻辑组图中的各组节点的资源信息也会相应更新。那么将根据开发人员的需要设置的逻辑组图提交至资源调度器,资源调度器就会根据逻辑组图中的各流节点的资源设置,分配相应的资源。如此,当数据流量等出现变化或者系统的网速等因素出现变化时,可以实现对各流节点、组节点的资源信息进行灵活的细粒度的调控。提高了资源设置的效率。那么在后续yarn集群就可根据开发人员在客户端设置的资源分配相应大小的资源,如此可以提高资源的利用率。
13.可选地,所述方法还包括:
14.所述流引擎客户端将所述逻辑组图转换为任务计划图;
15.所述流引擎客户端从所述逻辑组图中获取各组节点的资源信息并从所述逻辑流图中获取各流节点的资源信息;
16.所述流引擎客户端将所述各组节点的资源信息和所述各流节点的资源信息填充至所述任务计划图中,并显示所述任务计划图。
17.通过流引擎客户端从逻辑组图和逻辑流图中对应获取组节点和流节点的资源信息,填充至任务计划图中,可以使任务计划图中显示组节点和流节点的资源信息,方便用户查看和对照修改。
18.可选地,所述方法还包括:
19.所述流引擎客户端从所述任务计划图的显示界面接收用户的资源修改信息;
20.所述流引擎客户端依据所述资源修改信息对所述算子资源配置中的对应算子进行修改;
21.所述流引擎客户端基于修改后的算子资源配置更新所述逻辑组图并发送至所述资源调度器。
22.通过流引擎客户端从任务计划图的显示界面接收用户的资源修改信息,可以基于资源修改信息对算子资源配置进行对应的修改,如此,方便后续逻辑流图从算子资源配置中获取各流节点的资源信息,然后对应更新逻辑组图。将更新后的逻辑组图发送至资源调度器中,可以使资源调度器基于更新的资源信息对应分配资源,提高了资源的利用率。
23.可选地,流引擎客户端基于接收的待处理任务,生成所述待处理任务的逻辑流图,包括:
24.所述流引擎客户端基于flinkjar程序包或flinksql程序包,生成所述待处理任务的逻辑流图。
25.流引擎客户端可以基于不同的编程语言,如flinkjar和flinksql,生成待处理任务的逻辑流图。即,本发明实施例提供的资源设置方法可以适用于多种编程语言。统一了资源设置方式。
26.可选地,所述流引擎客户端从所述逻辑组图中获取各组节点的资源信息并从所述逻辑流图中获取各流节点的资源信息,包括:
27.所述流引擎客户端遍历所述任务计划图中的各组节点,利用所述任务计划图中的各组节点映射到所述逻辑组图中的各组节点,获取所述逻辑组图中各组节点的资源信息;
28.所述流引擎客户端遍历所述任务计划图中的各流节点,利用所述任务计划图中的各流节点映射到所述逻辑流图中的各流节点,获取所述逻辑流图中各流节点的资源信息。通过上述方式,可以快速且准确地获取各组节点和各流节点的资源信息。
29.可选地,所述流引擎客户端依据所述资源修改信息对所述算子资源配置中的对应算子进行修改,包括:
30.所述流引擎客户端获取所述资源修改信息和所述资源修改信息对应的组节点,根据所述组节点包含的流节点数量将所述资源修改信息进行均分,将均分后的资源修改信息对应更新至所述算子资源配置中所述组节点包含的流节点对应的算子的资源信息中。
31.用户可以通过对组节点的修改一并实现对流节点的修改。修改简单快捷,提高了资源设置的效率。
32.可选地,所述流引擎客户端依据所述资源修改信息对所述算子资源配置中的对应算子进行修改,包括:
33.所述流引擎客户端获取所述资源修改信息和所述资源修改信息对应的流节点,将所述资源修改信息对应更新至所述算子资源配置中所述流节点对应的算子的资源信息中。
34.用户可以对各流节点的资源进行各种修改,资源修改信息会对应更新至算子资源配置中。修改简单快捷,提高了资源设置的效率。
35.第二方面,本发明实施例还提供一种应用于分布式流数据流引擎的资源设置装置,包括:
36.生成单元,用于基于接收的待处理任务,生成所述待处理任务的逻辑流图,所述逻辑流图中包括代表用于处理所述待处理任务的各算子的各流节点;
37.获取单元,用于从算子资源配置中获取所述逻辑流图中各流节点的资源信息;
38.处理单元,用于将所述逻辑流图中具有相同的设定属性的流节点合并为组节点,得到具有各组节点的资源信息的逻辑组图;其中,组节点的资源信息是根据组节点中的流节点的资源信息得到的;将所述逻辑组图提交至资源调度器;所述资源调度器用于根据所述逻辑组图为所述待处理任务分配用于处理所述待处理任务的资源。
39.可选地,所述处理单元还用于:
40.将所述逻辑组图转换为任务计划图;
41.从所述逻辑组图中获取各组节点的资源信息并从所述逻辑流图中获取各流节点的资源信息;
42.将所述各组节点的资源信息和所述各流节点的资源信息填充至所述任务计划图中,并显示所述任务计划图。
43.可选地,所述处理单元还用于:
44.从所述任务计划图的显示界面接收用户的资源修改信息;
45.依据所述资源修改信息对所述算子资源配置中的对应算子进行修改;
46.基于修改后的算子资源配置更新所述逻辑组图并发送至所述资源调度器。
47.可选地,所述生成单元具体用于:
48.基于flinkjar程序包或flinksql程序包,生成所述待处理任务的逻辑流图。
49.可选地,所述处理单元具体用于:
50.所述流引擎客户端遍历所述任务计划图中的各组节点,利用所述任务计划图中的各组节点映射到所述逻辑组图中的各组节点,获取所述逻辑组图中各组节点的资源信息;
51.所述流引擎客户端遍历所述任务计划图中的各流节点,利用所述任务计划图中的各流节点映射到所述逻辑流图中的各流节点,获取所述逻辑流图中各流节点的资源信息。
可选地,所述处理单元具体用于:
52.所述流引擎客户端获取所述资源修改信息和所述资源修改信息对应的组节点,根据所述组节点包含的流节点数量将所述资源修改信息进行均分,将均分后的资源修改信息对应更新至所述算子资源配置中所述组节点包含的流节点对应的算子的资源信息中。
53.可选地,所述处理单元具体用于:
54.所述流引擎客户端获取所述资源修改信息和所述资源修改信息对应的流节点,将所述资源修改信息对应更新至所述算子资源配置中所述流节点对应的算子的资源信息中。
55.第三方面,本发明实施例还提供一种计算设备,包括:
56.存储器,用于存储计算机程序;
57.处理器,用于调用所述存储器中存储的计算机程序,按照获得的程序执行上述任一方式所列的应用于分布式流数据流引擎的资源设置方法。
58.第四方面,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行程序,所述计算机可执行程序用于使计算机执行上述任一方式所列的应用于分布式流数据流引擎的资源设置方法。
附图说明
59.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
60.图1a为本发明实施例提供的一种flink流引擎的系统架构的示意图;
61.图1b为本发明实施例提供的一种资源调度器的系统架构的示意图;
62.图1c为本发明实施例提供的另一种资源调度器的系统架构的示意图;
63.图2为本发明实施例提供的一种应用于flink的资源设置方法的流程示意图;
64.图3a为本发明实施例提供的一种flinkjar转化逻辑流图的示意图;
65.图3b为本发明实施例提供的一种flinksql转化逻辑流图的示意图;
66.图4a为本发明实施例提供的一种通过flinkjar的编程语言生成的逻辑流图的示意图;
67.图4b为本发明实施例提供的一种逻辑组图的示意图;
68.图5为本发明实施例提供的一种对算子资源配置进行修改的流程示意图;
69.图6a为本发明实施例提供的一种任务计划图的示意图;
70.图6b为本发明实施例提供的一种任务计划图的示意图;
71.图7为本发明实施例提供的一种应用于分布式流数据流引擎的资源设置的方法流程示意图;
72.图8为本发明实施例提供的一种应用于分布式流数据流引擎的资源设置装置的结构示意图;
73.图9为本发明实施例提供的一种计算机设备的结构示意图。
具体实施方式
74.为使本技术的目的、实施方式和优点更加清楚,下面将结合本技术示例性实施例中的附图,对本技术示例性实施方式进行清楚、完整地描述,显然,所描述的示例性实施例仅是本技术一部分实施例,而不是全部的实施例。
75.基于本技术描述的示例性实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术所附权利要求保护的范围。此外,虽然本技术中公开内容按照示范性一个或几个实例来介绍,但应理解,可以就这些公开内容的各个方面也可以单独构成一个完整实施方式。
76.需要说明的是,本技术中对于术语的简要说明,仅是为了方便理解接下来描述的实施方式,而不是意图限定本技术的实施方式。除非另有说明,这些术语应当按照其普通和通常的含义理解。
77.本技术中说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”等是用于区别类似或同类的对象或实体,而不必然意味着限定特定的顺序或先后次序,除非另外注明(unless otherwise indicated)。应该理解这样使用的用语在适当情况下可以互换,例如能够根据本技术实施例图示或描述中给出那些以外的顺序实施。
78.此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖但不排他的包含,例如,包含了一系列组件的产品或设备不必限于清楚地列出的那些组件,而是可包括没有清楚地列出的或对于这些产品或设备固有的其它组件。
79.图1a示例性的示出了本发明实施例所适用的一种flink流引擎的系统架构,包括流引擎客户端100和资源调度器200。仅为示例性地说明本发明实施例的技术方案,实际中flink流引擎中包含的组件可以有很多。
80.其中,流引擎客户端100用于接收待处理任务,将待处理任务划分为多个算子,并将每个算子的并行度、每个tm的总内存,每个tm上的slot个数等一系列配置信息发送至资源调度器200。资源调度器200根据配置信息进行资源的分配。
81.图1b示例性的示出了本发明实施例提供的一种资源调度器200的系统架构。包括jm(jobmanager,工作管理器),多个tm(如图1b中的tm1、tm2、tm3),每个tm中包括多个slot,slot用于具体的任务执行。
82.下面以一个具体的例子来解释资源调度器的工作过程。
83.流引擎客户端将待处理任务划分为3个算子,分别为:算子1-获取数据、算子2-确定最大值、算子3-输出。其中,算子1的并行度为2,算子2的并行度为2,算子3的并行度为3。资源调度器中的jm接收待处理任务及配置信息后,将3个算子发送至tm中进行处理。例如,算子1发送至tm1,tm1的内存是100g,tm1中包含3个slot,则每个slot大致均分33.3g的资源。算子1的并行度为2,则tm1分配两个slot执行算子1。同理,算子2发送至tm2,tm2的内存是100g,tm2中包含3个slot,则每个slot大致均分33.3g的资源。算子2的并行度为2,则tm2分配两个slot执行算子2。算子3发送至tm3,tm3的内存是100g,tm3中包含3个slot,则每个slot大致均分33.3g的资源。算子3的并行度为3,则tm3分配3个slot执行算子3。以上仅为示例,具体实施中,不同的算子可能会发送至同一个tm中进行处理。
84.图1c示例性的示出了本发明实施例提供的另一种资源调度器200的工作流程。
85.还是以上述例子为例,由于算子1和算子2相邻且具有相同的并行度,则可以将两
个算子划分为同一个组中,发送至同一个tm进行处理。例如,发送至tm1中,则tm1分配两个slot先执行算子1,在算子1执行完毕后执行算子2。如此,可以避免算子1的执行结果在不同的tm之间流动所需要的序列化/反序列化/传输消耗。
86.可以发现,在上述资源调度器的两种工作流程中,由于没有确定每个算子所需的资源,那么资源调度器只能将每个tm的资源进行均分,按照各算子的并行度为其分配slot个数,这样可能会出现如下情况:由于算子的计算逻辑不同,逻辑不同会消耗不同的资源,那么为逻辑不同的算子均分配同样的资源进行处理显然是不合理的,若分配的资源过多,则会有资源的浪费,挤占其他任务的运行资源;若分配的资源过少,则执行任务的速度会变慢,导致系统的崩溃。
87.因此,若能对任务的算子的资源进行针对性细粒度的设置,资源调度器就可分配相应大小的资源,如此可以提高资源的利用率。那么,流引擎客户端接收待处理任务,将待处理任务划分为不同的算子,并为每个算子设置需要的资源,例如:算子1-获取数据-并行度2-内存5g,那么在资源调度器接收到设置好资源的待处理任务后,就可针对资源请求分配相应大小的slot用于计算。例如,资源调度器将算子1发送至tm1进行计算,tm1分配两个大小共为5g的slot处理算子1。
88.但是,现有的flink流引擎客户端一般采用flink jar或flink sql的编程语言,其中,flink sql的编程语言不支持对算子的资源进行细粒度的设置,只能基于flink原生的配置项,配置一些诸如tm总内存、并行度、每个tm的slot个数等配置。无法做一些细粒度的资源配置,如每个算子所需的cpu个数、内存大小等。flink jar的编程语言虽然支持对算子的资源设置,但是这种资源设置是直接写死在代码中,无法灵活的修改。若出现任务量有突增的情况,之前设置的算子的资源不足以支撑这么大的任务量,那么还是会导致系统的崩溃。若要修改算子的资源配置,需要重新修改程序,重新打包,修改的过程非常繁琐。因此,目前基于以上两种api实现的flink应用程序均不能灵活地支持细粒度的资源设置和调整。
89.本发明实施例提供一种应用于flink的资源设置方法,如图2所示,包括:
90.步骤201、流引擎客户端基于接收的待处理任务,生成所述待处理任务的逻辑流图,所述逻辑流图中包括代表用于处理所述待处理任务的各算子的各流节点;
91.步骤202、所述流引擎客户端从算子资源配置中获取所述逻辑流图中各流节点的资源信息;
92.步骤203、所述流引擎客户端将所述逻辑流图中具有相同的设定属性的流节点合并为组节点,得到具有各组节点的资源信息的逻辑组图;其中,组节点的资源信息是根据组节点中的流节点的资源信息得到的;
93.步骤204、所述流引擎客户端将所述逻辑组图提交至资源调度器;所述资源调度器用于根据所述逻辑组图为所述待处理任务分配用于处理所述待处理任务的资源。
94.在步骤201中,流引擎客户端基于接收的待处理任务,生成所述待处理任务的逻辑流图streamgraph。逻辑流图是根据用户通过stream api编写的代码生成的最初的图,用来表示程序的拓扑结构。不同的编程语言生成逻辑流图的方法不同。
95.若采用flinkjar的编程语言,flinkjar转化逻辑流图如图3a所示:通过flinkjar基本属性jar包、主类、配置信息等基于flink api构建packagedprogram对象,然后调用静态方法packagedprogramutils.getpipelinefromprogram得到pipeline对象,我们仅关注
流式任务,pipeline即streamgraph。
96.若采用flinksql的编程语言,flinksql转化逻辑流图如图3b所示:按照“;”解析sql文本,得到sql语句集合。构造上下文环境streamexecutionenvironment,在上下文环境中逐条处理sql语句使sql逻辑应用到上下文中,通过streamexecutionenvironment.getstreamgraph得到streamgraph。
97.以上仅为示例,本发明实施例对生成待处理任务的逻辑流图采用的编程语言和方法不作限制。
98.在逻辑流图中展示了流引擎客户端对待处理任务的设置,图4a示出了一种可能的通过flinkjar的编程语言生成逻辑流图的结构,如图4a所示,将待处理任务划分为3个算子,即3个流节点,并生成了每个流节点的id,为每个流节点设置了并行度,还有一些细粒度的设置,如流节点所需的cpu个数、堆内内存和堆外内存。这些设置为写死在flinkjar的程序中,是无法灵活更改的。若为flinksql的编程语言生成的逻辑流图,则不会有这些细粒度的设置,仅仅包含id、名称和并行度。
99.在步骤202中,流引擎客户端从算子资源配置中获取所述逻辑流图中各流节点的资源信息。
100.算子资源配置存储在数据库中或其他存储介质中,用户可以对算子资源配置进行灵活的修改。具体的修改方式在下文中详述,下面先介绍生成算子资源配置的方法流程。
101.在步骤201中生成的逻辑流图中包含每个流节点的名称和id,然后流引擎客户端将每个流节点的名称和id的映射关系保存在数据库中,就生成了算子资源配置。表1示出了一种可能的算子资源配置的结构,如表1中,可以确定算子和id以及各种资源信息的对应关系。
102.表1
[0103] id并行度cpu个数堆内内存(g)堆外内存(g)算子1名称a2111算子2名称b2111算子3名称c3111
[0104]
由于开发人员可以对算子资源配置进行灵活的修改,每一次修改都会更新在算子资源配置中,那么在步骤202中,每一次开发人员修改算子资源配置后,流引擎客户端可以从算子资源配置中获取开发人员的资源修改信息,然后将资源修改信息设置在逻辑流图中具有相同id的流节点的资源信息中。例如,开发人员将算子资源配置中id为a的算子的cpu个数修改为2,则逻辑流图中id为a的算子对应的流节点的cpu个数也更新为2。若开发人员未对算子资源配置进行修改,则逻辑流图无更新。
[0105]
在步骤203中,流引擎客户端将所述逻辑流图中具有相同的设定属性的流节点合并为组节点,得到具有各组节点的资源信息的逻辑组图;其中,组节点的资源信息是根据组节点中的流节点的资源信息得到的。
[0106]
相同的设定属性可以为相邻且具有相同的并行度的流节点,例如在图4a示出的逻辑流图的结构中,流节点1和流节点2相邻且并行度相同,则合并为一个组节点,从而得到具有各组节点的资源信息的逻辑组图jobgraph。如图4b所示。实际上逻辑组图是以代码的形式存在,为了方便读者理解,在此整理成图的形式。逻辑组图中包含的信息也非常多,不止
图4b中列出的信息。在此仅为示例。流节点1和流节点2合并为了组节点1,组节点的资源信息是根据包含的各流节点的资源信息得到的。生成逻辑组图的方式不限,若采用flinksql或flinkjar的编程语言,则通过getjobgraph将逻辑流图转化为逻辑组图。
[0107]
在步骤204中,将逻辑组图提交至资源调度器,由于逻辑组图中有每个组节点的细粒度的资源配置信息,因此资源调度器会根据逻辑组图中的资源信息为待处理任务分配资源。
[0108]
例如,当开发人员将图4b中的逻辑组图提交至资源调度器,则资源调度器为组节点1分配tm1中的两个slot进行计算。其中两个slot的cpu总数为2,堆内内存总量为2,堆外内存总量为2。
[0109]
可以发现,采用本发明实施例提供的资源设置方法,通过设置算子资源配置,可以简便快捷地对任务的算子所需的资源进行细粒度的资源设置,同时,每次算子资源配置更新后,逻辑流图中各流节点的资源信息也会相应的更新。那么就可实现方便地对逻辑流图中各流节点的资源信息根据需要进行设置,进一步地,基于更新后的逻辑流图,生成的逻辑组图中的各组节点的资源信息也会相应更新。那么在将根据开发人员的需要设置的逻辑组图提交至资源调度器,资源调度器就会根据逻辑组图中的各流节点的资源设置,分配相应的资源。如此,当数据流量等出现变化或者系统的网速等因素出现变化时,可以实现对各流节点、组节点的资源信息进行灵活的细粒度的调控。提高了资源设置的效率。那么在后续yarn集群就可根据开发人员在客户端设置的资源分配相应大小的资源,如此可以提高资源的利用率。
[0110]
下面详细介绍开发人员对算子资源配置进行修改的方法流程。如图5所示,包括:
[0111]
步骤501、流引擎客户端将所述逻辑组图转换为任务计划图。
[0112]
逻辑组图实际上是以代码形式进行呈现的,其中包含的信息远远不止图4b中所示出的信息,提取逻辑组图中的一些关键信息生成任务计划图用于显示给开发人员,同时任务计划图还会显示任务在运行过程中的一些运行信息,因此开发人员可以通过任务计划图获取任务的运行逻辑是否正常。值得注意的是,在现有技术中,无论采用flinksql还是flinkjar的编程语言,在将逻辑组图转换为任务计划图的过程中,会将一些细粒度的资源信息抹除,因此得到的任务计划图如图6a所示。为了使任务计划图中显示细粒度的资源信息供用户查看以及修改,下面进行以下步骤。
[0113]
步骤502、所述流引擎客户端从所述逻辑组图中获取各组节点的资源信息并从所述逻辑流图中获取各流节点的资源信息。
[0114]
逻辑组图中包含各组节点的资源信息,逻辑流图中包含各流节点的资源信息。因此流引擎客户端可以从逻辑组图中获取各组节点的资源信息并从所述逻辑流图中获取各流节点的资源信息。具体的获取方式可以包括如下几种:
[0115]
方式一、遍历任务计划图中的各组节点,在逻辑组图中获取具有相同id的组节点的资源信息;遍历任务计划图中的各流节点,在逻辑流图中获取具有相同id的流节点的资源信息;
[0116]
方式二、由于算子资源配置中具有各算子即各流节点的资源信息,因此遍历任务计划图中的各流节点,在算子资源配置中获取具有相同id的流节点的资源信息;至于组节点的资源信息可以依然从逻辑组图中获取。
[0117]
步骤503、所述流引擎客户端将所述各组节点的资源信息和所述各流节点的资源信息填充至所述任务计划图中,并显示所述任务计划图。如图6b所示。
[0118]
至此得到的任务计划图中显示了各流节点的资源信息和各组节点的资源信息,并可视化展示给开发人员。开发人员可以基于任务的运行情况对资源信息进行修改。例如,若开发人员发现某一任务的运行速度明显降低,则可以对资源信息进行修改,例如增加cpu个数,增加堆内内存、堆外内存等。
[0119]
步骤504、所述流引擎客户端从所述任务计划图的显示界面接收用户的资源修改信息。
[0120]
例如,开发人员点击任务计划图的流节点1,可以对流节点1的资源信息进行设置,将堆内内存设置为3g,则流引擎客户端从任务计划图的显示界面接收开发人员内的资源修改信息,资源修改信息包括堆内内存设置为3g和该资源修改信息所对应的流节点的id。
[0121]
步骤505、所述流引擎客户端依据所述资源修改信息对所述算子资源配置中的对应算子进行修改。
[0122]
例如,流引擎客户端将算子资源配置中的流节点1的堆内内存设置为3g。
[0123]
步骤506、所述流引擎客户端基于修改后的算子资源配置更新所述逻辑组图并发送至所述资源调度器。
[0124]
算子资源配置更新后,逻辑流图会获取更新信息,并基于更新的资源信息生成逻辑组图,那么更新后的逻辑组图提交至资源调度器,资源调度器会根据最新提交的各组节点的资源信息进行资源的分配。
[0125]
开发人员可以根据需要对流节点和组节点的资源信息进行各种修改,下面列举两种可能的实施例。
[0126]
实施例一
[0127]
将如图6b所示的任务计划图进行显示,开发人员点击组节点1,修改组节点的堆内内存为5g,点击确定。由于组节点1中包含两个流节点,那么两个流节点会将组节点的堆内内存进行均分,因此每个流节点的堆内内存为2.5g,在算子资源配置中,将组节点1中对应的两个流节点对应的算子的堆内内存更新为2.5g。
[0128]
例如,若算子资源配置之前的结构如表1所示,则更新后的算子资源如表2所示。
[0129]
表2
[0130] id并行度cpu个数堆内内存(g)堆外内存(g)算子1名称a212.51算子2名称b212.51算子3名称c3111
[0131]
实施例二
[0132]
还可直接对流节点的资源信息进行更改。
[0133]
将如图6b所示的任务计划图进行显示,开发人员点击流节点1,修改流节点的堆内内存为3g,点击确定。那么流引擎客户端获取资源修改信息,并确定了资源修改信息对应的流节点1的id,在算子资源配置中,将与该流节点具有相同id的算子的资源信息更改为3g。
[0134]
例如,若算子资源配置之前的结构如表2所示,则更新后的算子资源如表3所示。
[0135]
表3
[0136] id并行度cpu个数堆内内存(g)堆外内存(g)算子1名称a2131算子2名称b212.51算子3名称c3111
[0137]
开发人员可以根据需要对各流节点和各组节点的资源信息进行各种更改,每次更改的资源信息会覆盖上次更改的资源信息。
[0138]
为了更好的解释本发明实施例,下面将在具体实施场景下来描述上述应用于分布式流数据流引擎的资源设置的流程。如图7所示。步骤的顺序仅为说明方法,具体实施中顺序可以任意调整。
[0139]
步骤701、流引擎客户端基于接收的待处理任务,生成待处理任务的逻辑流图。
[0140]
步骤702、开发人员基于任务计划图的显示界面对流节点或组节点的资源信息进行设置,生成资源修改信息。
[0141]
步骤703、流引擎客户端依据资源修改信息对算子资源配置中的对应算子进行修改。
[0142]
步骤704、流引擎客户端从算子资源配置中获取所述逻辑流图中各流节点的资源信息。
[0143]
步骤705、流引擎客户端将所述逻辑流图中具有相同的设定属性的流节点合并为组节点,得到具有各组节点的资源信息的逻辑组图。
[0144]
步骤706、流引擎客户端将所述逻辑组图提交至资源调度器。
[0145]
步骤707、流引擎客户端将所述逻辑组图转换为任务计划图。
[0146]
步骤708、流引擎客户端从所述逻辑组图中获取各组节点的资源信息并从所述逻辑流图中获取各流节点的资源信息;所述流引擎客户端将所述各组节点的资源信息和所述各流节点的资源信息填充至所述任务计划图中,并显示所述任务计划图。
[0147]
基于相同的技术构思,图8示例性的示出了本发明实施例提供的一种应用于分布式流数据流引擎的资源设置装置的结构,该结构可以执行应用于分布式流数据流引擎的资源设置的流程。
[0148]
如图8所示,该装置具体包括:
[0149]
生成单元801,用于基于接收的待处理任务,生成所述待处理任务的逻辑流图,所述逻辑流图中包括代表用于处理所述待处理任务的各算子的各流节点;
[0150]
获取单元802,用于从算子资源配置中获取所述逻辑流图中各流节点的资源信息;
[0151]
处理单元803,用于将所述逻辑流图中具有相同的设定属性的流节点合并为组节点,得到具有各组节点的资源信息的逻辑组图;其中,组节点的资源信息是根据组节点中的流节点的资源信息得到的;将所述逻辑组图提交至资源调度器;所述资源调度器用于根据所述逻辑组图为所述待处理任务分配用于处理所述待处理任务的资源。
[0152]
可选地,所述处理单元803还用于:
[0153]
将所述逻辑组图转换为任务计划图;
[0154]
从所述逻辑组图中获取各组节点的资源信息并从所述逻辑流图中获取各流节点的资源信息;
[0155]
将所述各组节点的资源信息和所述各流节点的资源信息填充至所述任务计划图
中,并显示所述任务计划图。
[0156]
可选地,所述处理单元803还用于:
[0157]
从所述任务计划图的显示界面接收用户的资源修改信息;
[0158]
依据所述资源修改信息对所述算子资源配置中的对应算子进行修改;
[0159]
基于修改后的算子资源配置更新所述逻辑组图并发送至所述资源调度器。
[0160]
可选地,所述生成单元801具体用于:
[0161]
基于flinkjar程序包或flinksql程序包,生成所述待处理任务的逻辑流图。
[0162]
可选地,所述处理单元803具体用于:
[0163]
所述流引擎客户端遍历所述任务计划图中的各组节点,利用所述任务计划图中的各组节点映射到所述逻辑组图中的各组节点,获取所述逻辑组图中各组节点的资源信息;
[0164]
所述流引擎客户端遍历所述任务计划图中的各流节点,利用所述任务计划图中的各流节点映射到所述逻辑流图中的各流节点,获取所述逻辑流图中各流节点的资源信息。
[0165]
可选地,所述处理单元803具体用于:
[0166]
所述流引擎客户端获取所述资源修改信息和所述资源修改信息对应的组节点,根据所述组节点包含的流节点数量将所述资源修改信息进行均分,将均分后的资源修改信息对应更新至所述算子资源配置中所述组节点包含的流节点对应的算子的资源信息中。
[0167]
可选地,所述处理单元803具体用于:
[0168]
所述流引擎客户端获取所述资源修改信息和所述资源修改信息对应的流节点,将所述资源修改信息对应更新至所述算子资源配置中所述流节点对应的算子的资源信息中。
[0169]
基于相同的技术构思,本技术实施例提供了一种计算机设备,如图9所示,包括至少一个处理器901,以及与至少一个处理器连接的存储器902,本技术实施例中不限定处理器901与存储器902之间的具体连接介质,图9中处理器901和存储器902之间通过总线连接为例。总线可以分为地址总线、数据总线、控制总线等。
[0170]
在本技术实施例中,存储器902存储有可被至少一个处理器901执行的指令,至少一个处理器901通过执行存储器902存储的指令,可以执行上述应用于分布式流数据流引擎的资源设置方法的步骤。
[0171]
其中,处理器901是计算机设备的控制中心,可以利用各种接口和线路连接计算机设备的各个部分,通过运行或执行存储在存储器902内的指令以及调用存储在存储器902内的数据,从而进行资源设置。可选的,处理器901可包括一个或多个处理单元,处理器901可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器901中。在一些实施例中,处理器901和存储器902可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
[0172]
处理器901可以是通用处理器,例如中央处理器(cpu)、数字信号处理器、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本技术实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本技术实施例所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
[0173]
存储器902作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器902可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(random access memory,ram)、静态随机访问存储器(static random access memory,sram)、可编程只读存储器(programmable read only memory,prom)、只读存储器(read only memory,rom)、带电可擦除可编程只读存储器(electrically erasable programmable read-only memory,eeprom)、磁性存储器、磁盘、光盘等等。存储器902是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本技术实施例中的存储器902还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
[0174]
基于相同的技术构思,本发明实施例还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行程序,计算机可执行程序用于使计算机执行上述任一方式所列的应用于分布式流数据流引擎的资源设置的方法。
[0175]
本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0176]
本技术是参照根据本技术的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0177]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0178]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0179]
显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献