CN110231991A - 一种任务分配方法、装置、电子设备及可读存储介质 - Google Patents
一种任务分配方法、装置、电子设备及可读存储介质 Download PDFInfo
- Publication number
- CN110231991A CN110231991A CN201910470715.6A CN201910470715A CN110231991A CN 110231991 A CN110231991 A CN 110231991A CN 201910470715 A CN201910470715 A CN 201910470715A CN 110231991 A CN110231991 A CN 110231991A
- Authority
- CN
- China
- Prior art keywords
- task
- processing
- target device
- equipment
- job task
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提出一种任务分配方法、装置、电子设备及可读存储介质,涉及数据处理技术领域,通过将分布有作业任务对应的存储分区的设备作为目标设备,进而在目标设备的空闲处理能力中,确定该作业任务对应的当前处理能力,从而以该确定出的当前处理能力所能消费的存储分区数量作为上限,将作业任务对应的处理任务中的至少部分处理任务分配至目标设备,由此,使得被分配至目标设备的所有处理任务在被执行时,能够尽量消费位于设备本地的存储分区内存储的消息,从而在占用较少的物理设备时,减少不同的设备进行交互的数据量,提升设备对外网卡带宽的使用效率。
Description
技术领域
本申请涉及数据处理技术领域,具体而言,涉及一种任务分配方法、装置、电子设备及可读存储介质。
背景技术
实时流式数据的处理过程对吞吐量、稳定性以及数据准确性有着较高的要求。
在一些应用场景中,可以基于kafka和Flink集群联和部署,利用kafka实时采集并保存消息;且将Flink则作为kafka的消费者,从kafka获取消息并进行消费,以处理kafka内保存的消息。
但在例如上述采用Flink消费kafka内保存的消息的应用场景中,要么需要占用较多的物理设备,要么会使得设备对外网卡带宽多功能复用,效率较低。
发明内容
本申请的目的在于提供一种任务分配方法、装置、电子设备及可读存储介质,能够减少不同的设备进行交互的数据量,提升设备对外网卡带宽的使用效率。
为了实现上述目的,本申请实施例采用的技术方案如下:
第一方面,本申请实施例提供一种任务分配方法,应用于实时流式数据处理组件Flink中的集群主节点,所述方法包括:
根据客户端提交的作业任务,确定目标设备,其中,所述作业任务对应有处理任务,所述目标设备上分布有所述作业任务对应的存储分区;
在所述目标设备的空闲处理能力中确定所述作业任务对应的当前处理能力,其中,所述当前处理能力所能消费的存储分区数量的上限为所述对应的存储分区的数量;
分配至少部分处理任务至所述目标设备,其中,所述至少部分处理任务的数量上限为所述当前处理能力所能消费的存储分区数量。
第二方面,本申请实施例提供一种任务分配装置,应用于实时流式数据处理组件Flink中的集群主节点,所述装置包括:
处理模块,用于根据客户端提交的作业任务,确定目标设备,其中,所述作业任务对应有处理任务,所述目标设备上分布有所述作业任务对应的存储分区;
所述处理模块还用于,在所述目标设备的空闲处理能力中确定所述作业任务对应的当前处理能力,其中,所述当前处理能力所能消费的存储分区数量的上限为所述对应的存储分区的数量;
分配模块,用于分配至少部分处理任务至所述目标设备,其中,所述至少部分处理任务的数量上限为所述当前处理能力所能消费的存储分区数量。
第三方面,本申请实施例提供一种电子设备,所述电子设备包括存储器,用于存储一个或多个程序;处理器。当所述一个或多个程序被所述处理器执行时,实现上述的任务分配方法。
第四方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述的任务分配方法。
本申请实施例提供的一种任务分配方法、装置、电子设备及可读存储介质,根据客户端提交的作业任务,通过将分布有该作业任务对应的存储分区的设备作为目标设备,并在目标设备的空闲处理能力中,以目标设备上分布的该作业任务对应的存储分区的数量作为上限,确定该作业任务对应的当前处理能力,进而以该确定出的当前处理能力所能消费的存储分区数量作为上限,将该作业任务对应的处理任务中的至少部分处理任务分配至目标设备,使得被分配至目标设备的所有处理任务在目标设备内被执行时,消费目标设备上分布的该作业任务对应的存储分区中的至少部分存储分区内存储的消息,相比于现有技术,使得处理任务在被执行时,尽量消费位于设备本地的存储分区内存储的消息,从而在占用较少的物理设备时,能够减少不同的设备进行交互的数据量,提升设备对外网卡带宽的使用效率。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它相关的附图。
图1为kafka和Flink集群联合部署的一种应用场景示意图;
图2为kafka和Flink集群联合部署的另一种应用场景示意图;
图3为Flink的一种基本架构示意图;
图4为本申请一实施例提供的任务分配方法的一种应用场景示意图;
图5为本申请一实施例提供的电子设备的一种示意性结构图;
图6为本申请一实施例提供的任务分配方法的一种示意性流程图;
图7为本申请一实施例提供的任务分配方法的另一种示意性流程图;
图8为图6中S201的子步骤的一种示意性流程图;
图9为本申请一实施例提供的任务分配装置的一种示意性结构图。
图中:100-电子设备;101-存储器;102-处理器;103-通信接口;300-任务分配装置;301-处理模块;302-分配模块。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
在例如基于kafka和Flink集群联合部署的应用场景中,当前主要有两种部署方式。
其中之一,作为示意,请参阅图1,图1为kafka和Flink集群联合部署的一种应用场景示意图,在如图1所示的部署方式中,kafka与Flink分别部署在不同的设备中,一方面,对于部署kafka的设备而言,其对外网卡的输入带宽只用于写入数据以保存至Topic(主题)中,对外网卡的输出带宽则仅用于将数据输出给Flink所在的设备;另一方面,对于部署Flink的设备而言,其对外网卡的输入带宽则只用于从kafka中获取数据,对外网卡的输出带宽则仅用于将数据输出给用于存储数据的设备进行保存。
在如图1所示的部署方式中,设备的对外网卡不管是对于输入带宽或者是在输出带宽,均能够做到专网专用,即对于部署kafka的设备而言,输入带宽仅用于写入数据以保存至Topic中,输出带宽则仅用于将数据输出给Flink所在的设备;而对于部署Flink的设备而言,输入带宽则仅用于从kafka中获取数据,输出带宽则仅用于将数据输出给用于存储数据的设备进行保存,带宽的使用效率较高,但需要部署较多的物理设备。
另一方面,作为示意,请参阅图2,图2为kafka和Flink集群联合部署的另一种应用场景示意图,在例如图2所示的部署方式中,同一台设备内均部署有kafka及Flink,一方面,对于某一具体的目标设备而言,其对外网卡的输入带宽需要用于kafka获取数据以将数据写入Topic中,对外网卡的输出带宽需要用于Flink将处理结束的数据输出给存储数据的设备进行结果存储;另一方面,目标设备对外网卡的输入带宽还需要用于Flink获取其他设备的Topic中的数据进行消费,且对外网卡的输出带宽同样需要用于kafka将数据输出给其他设备的Flink。
由此,相比于图1所示的部署方式,图2所示的部署方式虽然可以减少部署的物理设备的数量,但由于设备的输入带宽不仅需要kafka获取数据以将数据写入Topic中,还需要Flink获取位于其他设备的Topic中的数据进行消费,以及设备的输出带宽不仅需要将Flink处理结束的数据输出给存储数据的设备进行结果存储,还需要kafka将数据输出给其他设备的Flink,从而导致设备对外网卡的输入带宽及输出带宽均存在复用的情况(即不能仅用于kafka读取数据或者是仅用于Flink输出数据),导致设备对外网卡的带宽需要被不同的功能所占用,设备对外网卡的带宽使用效率较低。
以Flink消费kafka的Topic内存储的消息作为消费的数据为例,发明人在实际的工作中对上述的情况进行实际分析,发现如图2所示的部署方式存在设备对外网卡的带宽使用效率较低的原因在于,Flink消费的一个Topic可能包含有多个不同的存储分区(partition),而不同的存储分区可能位于不同的设备,导致Flink在消费某一Topic下不同存储分区的消息时,可能需要跨不同的物理设备消费不同的存储分区内的消息,使得Flink在消费Topic下的消息时,需要占用设备对外网卡的输入带宽及输出带宽进行消息在不同设备间的传输。
发明人仔细分析前述现象产生的原因,发现是由于Flink在消费kafka中某一Topic内存储的消息时,在将调度处理任务(Task)至设备被执行以消费Topic下某一存储分区内存储的消息时,并未考虑该Topic下不同存储分区在各个设备中的分布情况,而仅仅是关心设备是否有足够的处理能力执行处理任务,从而使得处理任务被分配至设备后被执行时,往往需要跨设备消费位于其他设备中的存储分区内存储的消息,从而占用了设备对外网卡的输入带宽及输出带宽。
比如,作为示意,请参阅图3,图3为Flink的一种基本架构示意图,在Flink的架构中主要包含三种角色,Client(客户端)、JobManager(集群主节点)及TaskManager(工作节点)。
其中,Client用于提交作业任务至JobManager;JobManager解析接收的作业任务,得到作业任务对应的执行计划中包含的处理任务的数量,与设备A及设备B各自的TaskManager进行交互,确定设备A及设备B上各自是否有足够的处理能力以分配出足够数量的TsakSlot(任务槽位),以执行该执行计划包含的所有处理任务,而不会关心该执行计划欲消费的Topic包含的各个存储分区在设备A或设备B中分布信息。
其中,值得说明的是,在例如Flink的应用场景中,TaskSlot指的是一个处理任务被设备执行时,设备A分配给执行该处理任务所消耗的资源总和,比如存储空间以及计算资源等。
例如,假定Client提交作业任务中包含执行计划A,且执行计划A包含两个处理任务,执行计划A欲消费的Topic包含两个存储分区,均位于设备B,设备A及设备B上均各自能够执行三个处理任务;JobManager解析Client提交作业任务,得到执行计划A,确定执行计划A包含两个处理任务,且根据设备A及设备B上各自的TaskManager的反馈,设备A及设备B上均能执行三个处理任务;示例性地,JobManager考虑到设备A具有足够的资源能力,能够执行该执行计划A包含的两个处理任务,因此将执行计划A包含的两个处理任务分配至设备A,且两个处理任务分别与位于设备B上的两个存储分区相互对应;两个处理任务在设备A上被执行时,通过设备A对外网卡的输入带宽,从设备B读取对应的存储分区内的消息;相应地,设备B利用对外网卡的输出带宽,传输消息给设备A。
在前述示例中,由于JobManager对任务分配存在策略上的缺陷,没有考虑Topic包含的各个存储分区在每一设备上的分布情况,从而导致执行计划A包含的两个处理任务被执行时,不仅占用了设备A对外网卡的输入带宽从设备B读取消息,同时占用了设备B对外网卡的输出带宽将消息输出给设备A,从而导致设备A和设备B的对外网卡存在复用的情况。
因此,基于上述缺陷,本申请实施例提供的一种可能的实现方式为:将分布有该作业任务对应的存储分区的设备作为目标设备,进而在该目标设备的空闲处理能力中,确定该作业任务对应的当前处理能力,进而以该确定出的当前处理能力所能消费的存储分区数量作为上限,分配该作业任务对应的处理任务中的至少部分处理任务至目标设备,使得被分配至目标设备的所有处理任务在目标设备内被执行时,消费目标设备上分布的该作业任务对应的存储分区中的至少部分存储分区内存储的消息。
比如,请参阅图4,图4为本申请一实施例提供的任务分配方法的一种应用场景示意图,在例如kafka和Flink集群联合部署的应用场景中,本申请的目的即在于,使分布于目标设备的存储分区内存储的消息尽量在目标设备本地被消费,从而在占用较少的物理设备部署kafka和Flink集群时,能够减少不同的设备进行交互的数据量,提升设备对外网卡带宽的使用效率。
比如在如图4的应用场景中,一些由kafka存储在本地的消息,根据本申请实施例提供的任务分配方法,能够直接在设备本地被Flink所消费,而无需占用设备对外网卡的带宽输出至其他设备被消费。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
请参阅图5,图5为本申请一实施例提供的电子设备100的一种示意性结构图。该电子设备100可以作为如图4中联合部署有kafka和Flink集群的设备。该电子设备100包括存储器101、处理器102和通信接口103,该存储器101、处理器102和通信接口103相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。
存储器101可用于存储软件程序及模块,如本申请实施例提供的任务分配装置300对应的程序指令/模块,处理器102通过执行存储在存储器101内的软件程序及模块,从而执行各种功能应用以及数据处理。该通信接口103可用于与其他节点设备进行信令或数据的通信。
其中,存储器101可以是但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。
处理器102可以是一种集成电路芯片,具有信号处理能力。该处理器102可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(NetworkProcessor,NP)等;还可以是数字信号处理器(Digital Signal Processing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
可以理解,图5所示的结构仅为示意,电子设备100还可以包括比图5中所示更多或者更少的组件,或者具有与图5所示不同的配置。图5中所示的各组件可以采用硬件、软件或其组合实现。
下面结合图2、图3及图4所示的应用场景,对本申请一实施例提供的任务分配方法进行示例性说明。
请参阅图6,图6为本申请一实施例提供的任务分配方法的一种示意性流程图,该任务分配方法可应用于如图3中的集群主节点,作为一种可能的实现方式,该任务分配方法包括以下步骤:
S201,根据客户端提交的作业任务,确定目标设备。
S203,在目标设备的空闲处理能力中确定作业任务对应的当前处理能力。
其中,目标设备的空闲处理能力表征当前该目标设备还能够处理作业的能力。
S205,分配至少部分处理任务至目标设备。
在例如图3的示意图中,JobManager根据Client提交的作业任务,解析该作业任务,确定该作业任务对应的处理任务,以及根据该作业任务对应的存储分区的分布信息,将分布有该作业任务对应的存储分区的设备作为目标设备。
比如,示例性地,结合图2及图3的示意图进行说明,JobManager根据Client提交的作业任务,并解析该作业任务得到执行计划A,确定该执行计划A对应有Task1及Task2两个处理任务;且执行计划A欲消费的Topic包含的存储分区包括partitionB1及partitionB2;若partitionB1及partitionB2均位于设备A,则JobManager将设备A作为目标设备;若partitionB1位于设备A,partitionB2位于设备B,则JobManager可以将设备A作为目标设备,也可以将设备B作为目标设备,只要确定的目标设备上分布有作业任务对应的存储分区即可,比如说,还可以是将设备A与设备B作为一个整体,一起作为目标设备,此时,目标设备则释义为所有配有作业任务对应的存储分区的设备的集合。
由此,对于分布有该作业任务对应的存储分区的目标设备,在该目标设备的空闲处理能力中确定该作业任务对应的当前处理能力,该当前处理能力表征目标设备所能消费位于目标设备上的该作业任务对应的存储分区的最大数量;其中,对于在目标设备的空闲处理能力中确定的当前处理能力,该当前处理能力所能消费的存储分区数量的上限为位于目标设备中该作业任务对应的存储分区的数量。
比如,在前述示例中,若执行计划A欲消费的Topic包含的两个存储分区partitionB1及partitionB2均位于设备A,则JobManager在以设备A作为目标设备时,确定的当前处理能力所能消费的存储分区数量的上限为2;而若partitionB1位于设备A,partitionB2位于设备B,则JobManager在以设备A作为目标设备时,确定的当前处理能力所能消费的存储分区数量的上限为1,同理,JobManager以设备B作为目标设备时,确定的当前处理能力所能消费的存储分区数量的上限为1。
由此,根据从目标设备的空闲处理能力中确定的当前处理能力,以当前处理能力所能消费的存储分区数量作为上限,分配该作业任务对应的处理任务中的至少部分处理任务至目标设备,即分配至目标设备的处理任务的数量不超过当前处理能力所能消费的存储分区数量,以使分配至目标设备的所有处理任务在目标设备内被执行时,消费目标设备上分布的该作业任务对应的存储分区中的至少部分存储分区内存储的消息,使得该对应的存储分区中的至少部分存储分区内存储的消息在目标设备本地即被处理任务消费,而无需占用目标设备对外网卡的带宽传输给其他设备后,在其他设备内被消费。
可见,本申请实施例提供的任务分配方法,根据客户端提交的作业任务,通过将分布有该作业任务对应的存储分区的设备作为目标设备,并在目标设备的空闲处理能力中,以目标设备上分布的该作业任务对应的存储分区的数量作为上限,确定该作业任务对应的当前处理能力,进而以该确定出的当前处理能力所能消费的存储分区数量作为上限,将该作业任务对应的处理任务中的至少部分处理任务分配至目标设备,使得被分配至目标设备的所有处理任务在目标设备内被执行时,消费目标设备上分布的该作业任务对应的存储分区中的至少部分存储分区内存储的消息,相比于现有技术,使得处理任务在被执行时,尽量消费位于设备本地的存储分区内存储的消息,从而在占用较少的物理设备时,能够减少不同的设备进行交互的数据量,提升设备对外网卡带宽的使用效率。
其中,作为一种可能的实现方式,目标设备的空闲处理能力用于指示目标设备当前能够执行的处理任务的最大数量。
比如,在例如Flink的应用场景中,以读取数据的任务进行示例性说明,处理任务被分配至目标设备后,由于目标设备内的一个或多个线程构成的一个处理单元,需要消耗目标设备内的物理资源,比如存储空间以及计算资源等去执行处理任务,并与Topic下的存储分区相对应,去读取该对应的存储分区内存储的消息,实现消息的消费;而TaskSlot则为一个处理单元需要消耗设备内的物理资源的总称。
因此,在前述例如Flink的应用场景中,目标设备的空闲处理能力则指示的是目标设备的空闲TaskSlot最多所能够启用的处理单元的个数,也就是能够执行的最大任务数量。
比如,以内存资源对TaskSlot进行说明,若Flink在配置时,TaskManager被分配管理有10GB的内存资源,且被配置为:为每一处理任务分配1GB的内存资源;则当TaskManager负责管理的空闲内存资源为6GB时,目标设备当前能够执行的处理任务的最大数量为6。
因此,作为一种可能的实现方式,在实现S203时,可以将目标设备当前能够执行的处理任务的最大数量,以及作业任务对应的存储分区的数量两者中的较小者,作为该作业任务对应的当前处理能力。
比如,结合图3的示意图以及上述示例,若以设备A作为目标设备,且设备A的空闲处理能力为6,partitionB1及partitionB2两个存储分区均位于设备A,则此时以存储分区的数量2作为执行计划A对应的当前处理能力;而若设备A的空闲处理能力为1,同样partitionB1及partitionB2两个存储分区均位于设备A,则此时以设备A的空闲处理能力1作为执行计划A对应的当前处理能力,使得在不超出所能消费的存储分区数量上限的前提下,能够最大化利用目标设备的空闲处理能力。
其中,值得说明的是,上述以目标设备当前能够执行的处理任务的最大数量作为目标设备的空闲处理能力仅为示意,在本申请实施例其他一些可能的实现方式中,还可以是将例如目标设备当前能启用的处理单元的数量等作为空闲处理能力。
并且,上述实施方式仅为示意,采用将目标设备当前能够执行的处理任务的最大数量,以及对应的存储分区的数量两者中的较小者,作为作业任务对应的当前处理能力。在本申请实施例其他一些可能的实现方式中,还可以取比两者中的较小者更小的数值,作为作业任务对应的当前处理能力。
比如在上述示例中,若以设备A作为目标设备,且设备A的空闲处理能力为6,partitionB1及partitionB2两个存储分区均位于设备A,则不仅可以取2作为当前处理能力,还可以取1作为当前处理能力,这取决于具体的应用场景而定,只要在目标设备的空闲处理能力中确定的当前处理能力所能消费的存储分区数量的上限为目标设备上分布的该作业任务对应的存储分区的数量即可。
因此,在S203确定作业任务对应的当前处理能力时,若以目标设备当前能够执行的处理任务的最大数量作为作业任务对应的当前处理能力,则表征目标设备的空闲处理能力,不足以消费掉目标设备内所有的存储分区内的消息,进而表征该作业任务当前除分配至目标设备的至少部分处理任务之外,仍有至少部分对应的处理任务未被分配至设备内被执行。
为此,请参阅图7,图7为本申请一实施例提供的任务分配方法的另一种示意性流程图,作为一种可能的实现方式,在图6的基础上,该任务分配方法还包括以下步骤:
S207,将作业任务对应的其他处理任务分配至目标设备之外的其他设备。
其中,该其他处理任务为作业任务对应的处理任务中除至少部分处理任务之外的处理任务。
比如,在上述结合图3所示应用场景的示例中,若执行计划A包含Task1、Task2两个处理任务,且执行计划A对应的Topic包含的两个存储分区partitionB1及partitionB2均位于设备A,在设备A的空闲处理能力中确定的当前处理能力为1;则示例性地,JobManager设备A作为目标设备,将Task1分配至设备A,以使Task1在设备A内被处理单元执行时,对应消费partitionB1内存储的消息;并且,JobManager则将Task2作为其他处理任务,并将Task2分配至设备B或者是其他具有处理能力的设备,以使Task2在设备B或者是其他具有处理能力的设备内被处理单元执行时,对应消费partitionB2内存储的消息。
示例性地,前述S207在实现时,可以通过设置最优失败队列的方式,先将其他处理任务Task2分配至最优失败队列,然后再将最优失败队列中的处理任务统一分配至其他具有处理能力的设备;其中,最优失败队列被配置为用于保存无法在设备本地被执行,以在设备本地读取存储区域内存储的消息的处理任务。
在实现S205时,由于需要根据从目标设备的空闲处理能力中确定的当前处理能力,分配该作业任务对应的处理任务中的至少部分处理任务至目标设备,然后再由目标设备利用空闲处理能力,比如空闲的物理资源、以及由空闲的线程构成的处理单元,执行分配至目标设备内的处理任务。
比如,在上述结合图3的示意图并以Flink为示例的应用场景中,若JobManager根据Client提交的作业任务,解析获得执行计划A,执行计划A包含Task1和Task2两个处理任务,且执行计划A欲消费的Topic包含的两个存储分区partitionB1及partitionB2均位于设备A;则JobManager以设备A作为目标设备,且与设备A内的TaskManager进行信息交互后获悉,设备A的空闲处理能力为6,则按照上述实施方式,可以将存储分区的数量2作为执行计划A对应的当前处理能力。
且此时,作为一种可能的实现方式,在执行S205时,将目标设备当前能够执行作业任务对应的处理任务的最大数量作为目标数值,并分配作业任务对应的处理任务中,数量与目标数值相同的处理任务分配至目标设备。
比如在前述示例中,JobManager在设备A上确定执行计划A对应的当前处理能力为2,则表征设备A当前能够执行该执行计划A对应的处理任务的最大数量为2,则JobManager将2作为目标数值,并将执行计划A包含的所有处理任务的两个处理任务分配至设备A,比如前述示例中的Task1和Task2。
值得说明的是,上述仅为示意,在执行S205时,在作业任务对应的处理任务中,分配了数量与目标设备当前能够执行作业任务对应的处理任务的最大数量相同的处理任务至目标设备,在本申请其他一些可能的实现方式中,还可以分配数量少于目标设备当前能够执行作业任务对应的处理任务的最大数量的处理任务至目标设备,比如在前述示例中,还可以分配1个处理任务至设备A。
可选地,为实现S201,请参阅图8,图8为图6中S201的子步骤的一种示意性流程图,作为一种可能的实现方式,S201包括以下子步骤:
S201a,解析客户端提交的作业任务,得到作业任务对应的存储分区分布信息。
S201b,在所有分布的设备中确定目标设备。
示意性地,结合图2、图3及图4所示,在例如kafka与Flink集群联合部署的架构中,Client向JobManager提交的作业任务中添加有消息标识,该消息标识用于指示作业任务欲消费的消息所属的Topic。
JobManager根据Client提交的作业任务,解析该作业任务,得到该作业任务对应的存储分区分布信息,该存储分区分布信息用于指示作业任务对应的所有存储分区在所有分布的设备中,每一设备上的分布数量;JobManager根据获得的存储分区分布信息,在该作业任务对应的所有存储分区在所有分布的设备中,确定出目标设备。
比如,在上述示例中,假定JobManager解析作业任务得到执行计划A,并利用zookeepr组件获取执行计划A欲消费的Topic各存储分区的分布信息,若得到的执行计划A对应的存储分区分布信息表征:执行计划A欲消费的Topic包含partitionB1及partitionB2两个存储分区,且partitionB1及partitionB2均分布在设备A,则JobManager将设备A作为目标设备;若partitionB1分布在设备A、partitionB2分布在设备B,则JobManager不仅可以以设备A作为目标设备,还可以将设备B作为目标设备。
请参阅图9,图9为本申请一实施例提供的任务分配装置300的一种示意性结构图,该任务分配装置300可应用于如图3中的集群主节点,该任务分配装置300包括处理模块301及分配模块302。
处理模块301用于根据客户端提交的作业任务,确定目标设备,其中,作业任务对应有处理任务,目标设备上分布有作业任务对应的存储分区;
处理模块301还用于,在目标设备的空闲处理能力中确定作业任务对应的当前处理能力,其中,当前处理能力所能消费的存储分区数量的上限为对应的存储分区的数量;
分配模块302用于分配至少部分处理任务至目标设备,其中,至少部分处理任务的数量上限为当前处理能力所能消费的存储分区数量。
可选地,作为一种可能的实现方式,目标设备的空闲处理能力用于指示目标设备当前能够执行的处理任务的最大数量;
处理模块301在目标设备的空闲处理能力中确定作业任务对应的当前处理能力时,具体用于:
将目标设备当前能够执行的处理任务的最大数量,以及对应的存储分区的数量两者中的较小者,作为作业任务对应的当前处理能力。
可选地,作为一种可能的实现方式,若以目标设备当前能够执行的处理任务的最大数量作为当前处理能力,则处理模块301还用于:
将作业任务对应的其他处理任务分配至目标设备之外的其他设备,其中,其他处理任务为作业任务对应的处理任务中除至少部分处理任务之外的处理任务。
可选地,作为一种可能的实现方式,分配模块302分配至少部分处理任务至目标设备时,具体用于:
分配作业任务对应的处理任务中,数量与目标数值相同的处理任务至目标设备,其中,目标数值表征当前处理能力所能消费的存储分区数量。
可选地,作为一种可能的实现方式,处理模块301根据客户端提交的作业任务,确定目标设备时,具体用于:
解析客户端提交的作业任务,得到作业任务对应的存储分区分布信息,其中,存储分区分布信息用于指示作业任务对应的所有存储分区在所有分布的设备中,每一设备上的分布数量;
在所有分布的设备中确定目标设备。
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。
也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。
也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
综上所述,本申请实施例提供的一种任务分配方法、装置、电子设备及可读存储介质,根据客户端提交的作业任务,通过将分布有该作业任务对应的存储分区的设备作为目标设备,并在目标设备的空闲处理能力中,以目标设备上分布的该作业任务对应的存储分区的数量作为上限,确定该作业任务对应的当前处理能力,进而以该确定出的当前处理能力所能消费的存储分区数量作为上限,将该作业任务对应的处理任务中的至少部分处理任务分配至目标设备,使得被分配至目标设备的所有处理任务在目标设备内被执行时,消费目标设备上分布的该作业任务对应的存储分区中的至少部分存储分区内存储的消息,相比于现有技术,使得处理任务在被执行时,尽量消费位于设备本地的存储分区内存储的消息,从而在占用较少的物理设备时,能够减少不同的设备进行交互的数据量,提升设备对外网卡带宽的使用效率。
以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其它的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
Claims (12)
1.一种任务分配方法,其特征在于,应用于实时流式数据处理组件Flink中的集群主节点,所述方法包括:
根据客户端提交的作业任务,确定目标设备,其中,所述作业任务对应有处理任务,所述目标设备上分布有所述作业任务对应的存储分区;
在所述目标设备的空闲处理能力中确定所述作业任务对应的当前处理能力,其中,所述当前处理能力所能消费的存储分区数量的上限为所述对应的存储分区的数量;
分配至少部分处理任务至所述目标设备,其中,所述至少部分处理任务的数量上限为所述当前处理能力所能消费的存储分区数量。
2.如权利要求1所述的方法,其特征在于,所述目标设备的空闲处理能力用于指示所述目标设备当前能够执行的处理任务的最大数量;
在所述目标设备的空闲处理能力中确定所述作业任务对应的当前处理能力的步骤,包括:
将所述目标设备当前能够执行的处理任务的最大数量,以及所述对应的存储分区的数量两者中的较小者,作为所述作业任务对应的所述当前处理能力。
3.如权利要求2所述的方法,其特征在于,若以所述目标设备当前能够执行的处理任务的最大数量作为所述当前处理能力,则所述方法还包括:
将所述作业任务对应的其他处理任务分配至所述目标设备之外的其他设备,其中,所述其他处理任务为所述作业任务对应的处理任务中除所述至少部分处理任务之外的处理任务。
4.如权利要求1所述的方法,其特征在于,分配至少部分处理任务至所述目标设备的步骤,包括:
分配所述作业任务对应的处理任务中,数量与目标数值相同的处理任务至所述目标设备,其中,所述目标数值表征所述当前处理能力所能消费的存储分区数量。
5.如权利要求1所述的方法,其特征在于,根据客户端提交的作业任务,确定目标设备的步骤,包括:
解析所述客户端提交的所述作业任务,得到所述作业任务对应的存储分区分布信息,其中,所述存储分区分布信息用于指示所述作业任务对应的所有存储分区在所有分布的设备中,每一设备上的分布数量;
在所述所有分布的设备中确定所述目标设备。
6.一种任务分配装置,其特征在于,应用于实时流式数据处理组件Flink中的集群主节点,所述装置包括:
处理模块,用于根据客户端提交的作业任务,确定目标设备,其中,所述作业任务对应有处理任务,所述目标设备上分布有所述作业任务对应的存储分区;
所述处理模块还用于,在所述目标设备的空闲处理能力中确定所述作业任务对应的当前处理能力,其中,所述当前处理能力所能消费的存储分区数量的上限为所述对应的存储分区的数量;
分配模块,用于分配至少部分处理任务至所述目标设备,其中,所述至少部分处理任务的数量上限为所述当前处理能力所能消费的存储分区数量。
7.如权利要求6所述的装置,其特征在于,所述目标设备的空闲处理能力用于指示所述目标设备当前能够执行的处理任务的最大数量;
所述处理模块在所述目标设备的空闲处理能力中确定所述作业任务对应的当前处理能力时,具体用于:
将所述目标设备当前能够执行的处理任务的最大数量,以及所述对应的存储分区的数量两者中的较小者,作为所述作业任务对应的所述当前处理能力。
8.如权利要求7所述的装置,其特征在于,若以所述目标设备当前能够执行的处理任务的最大数量作为所述当前处理能力,则所述处理模块还用于:
将所述作业任务对应的其他处理任务分配至所述目标设备之外的其他设备,其中,所述其他处理任务为所述作业任务对应的处理任务中除所述至少部分处理任务之外的处理任务。
9.如权利要求6所述的装置,其特征在于,所述分配模块分配至少部分处理任务至所述目标设备时,具体用于:
分配所述作业任务对应的处理任务中,数量与目标数值相同的处理任务至所述目标设备,其中,所述目标数值表征所述当前处理能力所能消费的存储分区数量。
10.如权利要求6所述的装置,其特征在于,所述处理模块根据客户端提交的作业任务,确定目标设备时,具体用于:
解析所述客户端提交的所述作业任务,得到所述作业任务对应的存储分区分布信息,其中,所述存储分区分布信息用于指示所述作业任务对应的所有存储分区在所有分布的设备中,每一设备上的分布数量;
在所述所有分布的设备中确定所述目标设备。
11.一种电子设备,其特征在于,包括:
存储器,用于存储一个或多个程序;
处理器;
当所述一个或多个程序被所述处理器执行时,实现如权利要求1-5中任一项所述的方法。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1-5中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910470715.6A CN110231991B (zh) | 2019-05-31 | 2019-05-31 | 一种任务分配方法、装置、电子设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910470715.6A CN110231991B (zh) | 2019-05-31 | 2019-05-31 | 一种任务分配方法、装置、电子设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110231991A true CN110231991A (zh) | 2019-09-13 |
CN110231991B CN110231991B (zh) | 2022-03-08 |
Family
ID=67858914
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910470715.6A Active CN110231991B (zh) | 2019-05-31 | 2019-05-31 | 一种任务分配方法、装置、电子设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110231991B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110618869A (zh) * | 2019-09-19 | 2019-12-27 | 北京思维造物信息科技股份有限公司 | 一种资源管理方法、装置及设备 |
CN110765064A (zh) * | 2019-10-18 | 2020-02-07 | 山东浪潮人工智能研究院有限公司 | 一种异构计算架构的边缘端图像处理系统及方法 |
CN111766863A (zh) * | 2019-12-30 | 2020-10-13 | 广州极飞科技有限公司 | 作业设备与任务地块的绑定方法及相关装置 |
CN112860412A (zh) * | 2021-03-12 | 2021-05-28 | 网易(杭州)网络有限公司 | 业务数据处理方法、装置、电子设备及存储介质 |
CN114220383A (zh) * | 2020-09-18 | 2022-03-22 | 西安诺瓦星云科技股份有限公司 | 任务处理方法、装置和控制设备以及led显示系统 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110258246A1 (en) * | 2010-04-14 | 2011-10-20 | International Business Machines Corporation | Distributed solutions for large-scale resource assignment tasks |
CN102255926A (zh) * | 2010-05-17 | 2011-11-23 | 中国移动通信集团公司 | MapReduce系统中的任务分配方法、系统及装置 |
US20120297145A1 (en) * | 2011-05-20 | 2012-11-22 | Claris Castillo | System and method to improve i/o performance of data analytic workloads |
CN103034541A (zh) * | 2012-11-16 | 2013-04-10 | 北京奇虎科技有限公司 | 一种分布式消息系统及其中的设备和方法 |
CN104252472A (zh) * | 2013-06-27 | 2014-12-31 | 国际商业机器公司 | 用于并行化数据处理的方法和装置 |
US20160292012A1 (en) * | 2015-03-30 | 2016-10-06 | Qualcomm Incorporated | Method for exploiting parallelism in task-based systems using an iteration space splitter |
CN106371918A (zh) * | 2016-08-23 | 2017-02-01 | 北京云纵信息技术有限公司 | 任务集群调度管理方法及装置 |
US20180136842A1 (en) * | 2016-11-11 | 2018-05-17 | Hewlett Packard Enterprise Development Lp | Partition metadata for distributed data objects |
CN109739849A (zh) * | 2019-01-02 | 2019-05-10 | 山东省科学院情报研究所 | 一种数据驱动的网络敏感信息挖掘与预警平台 |
-
2019
- 2019-05-31 CN CN201910470715.6A patent/CN110231991B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110258246A1 (en) * | 2010-04-14 | 2011-10-20 | International Business Machines Corporation | Distributed solutions for large-scale resource assignment tasks |
CN102255926A (zh) * | 2010-05-17 | 2011-11-23 | 中国移动通信集团公司 | MapReduce系统中的任务分配方法、系统及装置 |
US20120297145A1 (en) * | 2011-05-20 | 2012-11-22 | Claris Castillo | System and method to improve i/o performance of data analytic workloads |
CN103034541A (zh) * | 2012-11-16 | 2013-04-10 | 北京奇虎科技有限公司 | 一种分布式消息系统及其中的设备和方法 |
CN104252472A (zh) * | 2013-06-27 | 2014-12-31 | 国际商业机器公司 | 用于并行化数据处理的方法和装置 |
US20160292012A1 (en) * | 2015-03-30 | 2016-10-06 | Qualcomm Incorporated | Method for exploiting parallelism in task-based systems using an iteration space splitter |
CN106371918A (zh) * | 2016-08-23 | 2017-02-01 | 北京云纵信息技术有限公司 | 任务集群调度管理方法及装置 |
US20180136842A1 (en) * | 2016-11-11 | 2018-05-17 | Hewlett Packard Enterprise Development Lp | Partition metadata for distributed data objects |
CN109739849A (zh) * | 2019-01-02 | 2019-05-10 | 山东省科学院情报研究所 | 一种数据驱动的网络敏感信息挖掘与预警平台 |
Non-Patent Citations (2)
Title |
---|
MASAHIRO TANAKA等: "Disk cache-aware task scheduling for data-intensive and many-task workflow", 《2014 IEEE INTERNATIONAL CONFERENCE ON CLUSTER COMPUTING (CLUSTER)》 * |
杨鹏等: "一种基于MongoDB和Hadoop的海量非结构化物联网数据处理方案", 《微电子学与计算机》 * |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110618869A (zh) * | 2019-09-19 | 2019-12-27 | 北京思维造物信息科技股份有限公司 | 一种资源管理方法、装置及设备 |
CN110765064A (zh) * | 2019-10-18 | 2020-02-07 | 山东浪潮人工智能研究院有限公司 | 一种异构计算架构的边缘端图像处理系统及方法 |
CN110765064B (zh) * | 2019-10-18 | 2022-08-23 | 山东浪潮科学研究院有限公司 | 一种异构计算架构的边缘端图像处理系统及方法 |
CN111766863A (zh) * | 2019-12-30 | 2020-10-13 | 广州极飞科技有限公司 | 作业设备与任务地块的绑定方法及相关装置 |
CN114220383A (zh) * | 2020-09-18 | 2022-03-22 | 西安诺瓦星云科技股份有限公司 | 任务处理方法、装置和控制设备以及led显示系统 |
CN112860412A (zh) * | 2021-03-12 | 2021-05-28 | 网易(杭州)网络有限公司 | 业务数据处理方法、装置、电子设备及存储介质 |
CN112860412B (zh) * | 2021-03-12 | 2023-10-20 | 网易(杭州)网络有限公司 | 业务数据处理方法、装置、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN110231991B (zh) | 2022-03-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110231991A (zh) | 一种任务分配方法、装置、电子设备及可读存储介质 | |
US11184261B2 (en) | Techniques to configure physical compute resources for workloads via circuit switching | |
US20170230247A1 (en) | System and Method for Determining and Visualizing Efficiencies and Risks in Computing Environments | |
CN109597685A (zh) | 任务分配方法、装置和服务器 | |
CN109144658B (zh) | 有限资源的负载均衡方法、装置及电子设备 | |
CN110162388A (zh) | 一种任务调度方法、系统及终端设备 | |
US8245238B2 (en) | Routing workloads based on relative queue lengths of dispatchers | |
CN108549583A (zh) | 大数据处理方法、装置、服务器及可读存储介质 | |
US20150058844A1 (en) | Virtual computing resource orchestration | |
US20120017102A1 (en) | Event based correlation of power events | |
CN104854563A (zh) | 资源使用的自动分析 | |
Azizi et al. | A priority-based service placement policy for fog-cloud computing systems | |
CN109324890A (zh) | 资源管理方法、装置及计算机可读存储介质 | |
CN108388490A (zh) | 一种测试高端服务器内存的方法及系统 | |
CN109587997A (zh) | 分配服务器位置的方法、电子设备及计算机可读存储介质 | |
CN109002342A (zh) | 一种基于OpenStack的计算资源定向调度方法及系统 | |
CN110839007B (zh) | 一种云网络安全处理方法、设备和计算机存储介质 | |
CN107135123A (zh) | 一种rack服务器资源动态池化的调配方法 | |
Zhu et al. | Optimal resource assignment in internet data centers | |
CN107729218A (zh) | 一种监控处理计算资源设备的系统及方法 | |
US20160006617A1 (en) | Cloud application bandwidth modeling | |
CN108664322A (zh) | 数据处理方法及系统 | |
CN109257256A (zh) | 设备监控方法、装置、计算机设备及存储介质 | |
CN109445863A (zh) | 一种基于fpga的数据处理方法、装置、设备及介质 | |
CN109683823A (zh) | 一种管理存储器多并发请求的方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |