CN104598304B - 用于作业执行中的调度的方法和装置 - Google Patents
用于作业执行中的调度的方法和装置 Download PDFInfo
- Publication number
- CN104598304B CN104598304B CN201310531204.3A CN201310531204A CN104598304B CN 104598304 B CN104598304 B CN 104598304B CN 201310531204 A CN201310531204 A CN 201310531204A CN 104598304 B CN104598304 B CN 104598304B
- Authority
- CN
- China
- Prior art keywords
- post
- processor
- data
- speed
- pretreating
- 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.)
- Active
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/505—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 load
-
- 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/5044—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 hardware capabilities
-
- 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]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Power Sources (AREA)
- Devices For Executing Special Programs (AREA)
- Advance Control (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明涉及用于作业执行中的调度的方法和装置。根据本发明的实施例,提供一种在执行作业中调度由一个或多个前处理机和一个或多个后处理机共享的多个作业槽的方法,所述前处理机产生的数据将被馈送给所述后处理机以便处理。该方法包括:确定所述前处理机的总体数据产生速度;确定所述后处理机的总体数据消耗速度;以及基于所述总体数据产生速度和所述总体数据消耗速度,调度至少一个所述作业槽在所述前处理机和所述后处理机之间的分配。还公开了相应的装置。
Description
技术领域
本发明的实施例总体上涉及计算机领域,更具体地,涉及用于作业执行中的调度的方法和装置。
背景技术
并行计算已经得到了日益广泛的应用。通常,一个作业(job)可以被分为多个任务阶段。每个阶段的任务可被分发到多个不同的节点以便并行地被执行。而后,上一阶段产生的数据(称为“中间数据”)被传输给下一阶段的任务以进行后续处理。同一阶段中可以存在多个能够并发执行的任务。例如,MapReduce(映射化简)模式被广泛地应用于并发计算,其中一个作业被划分为映射(map)阶段和化简(reduce)阶段。在映射阶段和化简阶段中,各自可以存在多个可并发执行的任务。映射任务所产生的中间结果被馈送给下游的化简任务。
在映射与化简之间传输数据的阶段可以称为调度阶段或称Shuffle。调度阶段对于作业执行的总体性能至关重要。在某些应用场景下,调度阶段的执行时间可以占到化简任务总时间的90%以上。在传统的MapReduce模式中,映射任务和化简任务分别使用不同的作业槽(slot)。为了改善调度,已经提出了映射任务和化简任务共享多个作业槽的架构。以此方式,能够改善节点的中央处理单元(CPU)、网络、磁盘等资源的使用率,并且可以降低调度所花费的时间。
然而,在这样的MapReduce实现中,调度阶段往往存在不平衡性。当映射阶段的数据产生速度小于化简阶段的数据消耗速度时,很多负责化简的化简器(reducer)可能处于空闲和等待状态。反之,当映射阶段的速度大于化简阶段的速度时,映射器(mapper)所产生的中间结果无法被及时取走。为了解决这种不平衡性,已经提出了使用参数来控制何时启动化简任务的方案。另外,利用映射任务和化简任务之间的比率来控制调度的方案也是已知的。但是,参数的设计需要人类专家来手工设定。而且,对于不同的应用和不同的阶段而言,最优参数可能是不同的。因此,已知的参数化控制仍然无法完全克服映射任务和化简任务之间的不平衡性。
特别地,应当理解的是:不同阶段的任务之间的调度问题广泛存在于各种并行或者分布式计算中,不仅限于上文作为示例描述的MapReduce模式。一般地,在作业的并行化处理中,处于上游阶段的任务(简称“上游任务”)与处于下游阶段的任务(简称“下游任务”)之间的处理速度的失配将导致调度阶段的不平衡,从而对整体执行效率产生不利的影响。例如,在遵循MPI(Message Passing Interface)等架构的并行作业处理中,同样需要应对上游任务与下游任务之间的潜在失衡。
发明内容
为了解决上述以及其他潜在问题,本发明提出了一种用于开发、测试和部署应用的方法和装置。
在本发明的第一方面,提供一种在执行作业中调度由一个或多个前处理机和一个或多个后处理机共享的多个作业槽的方法,所述前处理机产生的数据将被馈送给所述后处理机以便处理。所述方法包括:确定所述前处理机的总体数据产生速度;确定所述后处理机的总体数据消耗速度;以及基于所述总体数据产生速度和所述总体数据消耗速度,调度至少一个所述作业槽在所述前处理机和所述后处理机之间的分配。
在本发明的第二方面,提供一种在执行作业中调度由一个或多个前处理机和一个或多个后处理机共享的多个作业槽的装置,所述前处理机产生的数据将被馈送给所述后处理机以便处理。所述装置包括:产生速度确定单元,被配置为确定所述前处理机的总体数据产生速度;消耗速度确定单元,被配置为确定所述后处理机的总体数据消耗速度;以及调度单元,被配置为基于所述总体数据产生速度和所述总体数据消耗速度,调度至少一个所述作业槽在所述前处理机和所述后处理机之间的分配。
通过下文描述将会理解,根据本发明的实施例,可以在无需人类用户干预的情况下,根据作业执行的具体情况而动态地调度上游任务和下游任务的执行。以此方式,能够显著改善系统的资源利用率,提高作业执行的总体效率。而且,本发明的实施例可以适用于各种不同的应用和不同的应用阶段。
附图说明
通过结合附图对本发明示例性实施方式进行更详细的描述,本发明的上述以及其它目的、特征和优势将变得更加明显其中:
图1示出了适于用来实现本发明实施例的示例性计算机系统/服务器的示意性框图;
图2示出了根据本发明实施例的用于在执行作业中调度由一个或多个前处理机和一个或多个后处理机共享的多个作业槽的方法的示意性流程图;
图3示出了根据本发明实施例的用于调度作业槽的方法的示意性流程图;
图4示出了用于选择将要被换入的后处理机的方法的示意性流程图;
图5示出了根据图4所示的方法来选择后处理机的示例的示意性框图;以及
图6示出了根据本发明实施例的用于在执行作业中调度由一个或多个前处理机和一个或多个后处理机共享的多个作业槽的装置的示意性框图。
贯穿附图,相同或相似的标号被用来表示相同或相似的元素。
具体实施方式
下面将参照附图更详细地描述本发明的优选实施方式。虽然附图中显示了本发明的优选实施方式,然而应该理解,可以以各种形式实现本发明而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本发明更加透彻和完整,并且能够将本发明的范围完整地传达给本领域的技术人员。
所属技术领域的技术人员知道,本发明可以实现为装置、方法或计算机程序产品。因此,本发明可以具体实现为以下形式,即:可以是完全的硬件、也可以是完全的软件(包括固件、驻留软件、微代码等),还可以是硬件和软件结合的形式,本文一般称为“电路”、“模块”或“系统”。此外,在一些实施例中,本发明还可以实现为在一个或多个计算机可读介质中的计算机程序产品的形式,该计算机可读介质中包含计算机可读的程序代码。
可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是-但不限于-电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括-但不限于-电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括-但不限于-无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言-诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言-诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络-包括局域网(LAN)或广域网(WAN)-连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
下面将参照本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述本发明。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机程序指令实现。这些计算机程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,这些计算机程序指令通过计算机或其它可编程数据处理装置执行,产生了实现流程图和/或框图中的方框中规定的功能/操作的装置。
也可以把这些计算机程序指令存储在能使得计算机或其它可编程数据处理装置以特定方式工作的计算机可读介质中,这样,存储在计算机可读介质中的指令就产生出一个包括实现流程图和/或框图中的方框中规定的功能/操作的指令装置(instructionmeans)的制造品(manufacture)。
也可以把计算机程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机或其它可编程装置上执行的指令能够提供实现流程图和/或框图中的方框中规定的功能/操作的过程。
下面参考附图详细描述根据本发明的示例性实施例。图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。图1显示的计算机系统/服务器12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图1所示,计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括-但不限于-操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机系统/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管未在图中示出,可以结合计算机系统/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。还应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
现在参考图2,其示出了根据本发明实施例的在执行作业中调度由多个前处理机和多个后处理机共享的多个作业槽的方法200的流程图。在此使用的术语“作业”是指任何计算任务,例如数据分析、数据处理、数据挖掘,等等。根据本发明的实施例,作业的处理被划分为不同阶段的任务。在早先阶段被执行的任务称为“上游任务”,例如MapReduce模式中映射任务。在后续阶段被执行的任务被称为“下游任务,,,例如MapReduce模式中的下游任务。注意,如上文所述,本发明的范围不限于MapReduce模式。相反,本发明的实施例适用于将作业的处理分为不同阶段并且由此需要在上、下游任务之间执行调度的所有模式。例如,本发明的实施例可被用来处理遵循任何MPI模型的并行化作业处理。
根据本发明的实施例,前处理机用来处理作业执行中的上游任务,例如MapReduce模式中的映射任务。后处理机用来处理作业执行中的下游任务,例如MapReduce模式中的化简任务。可以理解的是,上游任务和下游任务之间存在依赖关系。由此,一个前处理机产生的数据将被馈送至一个或多个后处理机以便处理。同样,一个后处理机可以接收来自一个或多个前处理机的数据。根据本发明的实施例,前处理机和后处理机可以是用于处理任务的程序、线程、例程、硬件设备,等等。另外,前处理机和后处理机可以分布在一个或多个不同的节点(node)上。
特别地,根据本发明的实施例,前处理机和后处理机共享多个共同的作业槽(slot)。一个作业槽是一个资源调度的单位。只有在为前处理机或者后处理机分配作业槽之后,相应的上游任务或者下游任务才能开始执行。反之,没有被分配给作业槽的处理机处于空闲状态。通常,在一个作业的执行被启动之后,所有的作业槽都被分配给前处理机,以用于执行上游任务。例如,在MapReduce模式中,在一个作业被启动执行之后,所有的可用作业槽都将被分配给负责映射任务的映射器。
根据图2所示的方法200,在步骤S201,确定一个或多个前处理机的总体数据产生速度。根据本发明的实施例,总体数据产生速度可以被计算为在单位时间内由所有前处理机产生的数据的总量。可以理解,这些数据是将被馈送给后处理机的中间处理结果。总体数据产生速度反映了系统中的所有前处理机的整体数据产生水平。
接下来,在步骤S202,确定一个或多个后处理机的总体数据消耗速度。根据本发明的实施例,总体数据消耗速度可以被表示为单位时间内所有后处理机所消耗或处理的数据的总量。总体数据消耗速度反映了系统中的所有后处理机的整体数据吞吐水平。
在步骤S203,基于步骤S201处计算的前处理机的总体数据产生速度以及在步骤S202处计算的后处理机的总体数据产生速度,调度至少一个作业槽在所述前处理机和所述后处理机之间的分配,以此降低甚至消除前处理机的数据产生速度与后处理机的数据消耗速度之间的失衡。具体而言,如果前处理机的总体数据产生速度大于后处理机的总体数据消耗速度,则确定在调度阶段可能出现数据的拥塞。换言之,此时,由前处理机产生和输出的数据无法被后处理机及时接收和处理。将会理解,这可能需要消耗额外的资源来存储这些中间数据。此时,根据本发明的实施例,可以根据总体产生速度和总体消耗速度之间的差异情况来确定适当的调度策略。
根据本发明的实施例,调度包括将作业槽从前处理机或后处理机解分配(de-allocate)。可选地,“调度”还可以包括将已经被解分配的作业槽重新分配(re-allocate)给前处理机或后处理机。例如,如果前处理机的总体产生速度超过后处理机的总体消耗速度的差值超过一个上限阈值,可以将一个或多个作业槽从前处理机解分配,并且将从前处理机解分配的作业槽重新分配给一个或多个后处理机。在本发明的某些实施例中,可以根据总体数据产生速度与总体数据消耗速度之间的差,来从前处理机被解分配的作业槽的数目。
备选地,如果前处理机的总体产生速度超过后处理机的总体消耗速度的差值小于上限阈值、但是大于一个下限阈值,则可以仅仅将作业槽从至少一个前处理机解分配,而不进行向后处理机的重新分配。另外,如果上述差值小于下限阈值,则说明前处理机与后处理机之间的失衡不是十分严重。此时,可以不执行任何调度动作,以避免由于过度的系统切换而引起的不必要开销。
反之,如果前处理机的总体数据产生速度小于后处理机的总体数据消耗速度,则在调度阶段可能出现后处理机的饥饿。换言之,此时,由前处理机产生和输出的数据无法满足后处理机的需要,一个或多个后处理机将处于空闲和等待中。相应地,分配给空闲后处理机的资源将被浪费。此时,根据本发明的实施例,例如可以将一个或多个作业槽从后处理机解分配,还可以可选地将从后处理机解分配的作业槽重新分配给一个或多个前处理机。这与上文描述类似,在此不再赘述。
方法200可以被定期执行,和/或响应于用户命令而被执行。通过执行方法200,可以动态地、实时地监测作业处理中的不同阶段之间的不平衡性,并且通过重新分配作业槽来相应地调整上游任务和下游任务的执行速度,从而使整个系统趋于平衡状态,由此提供总体系统性能。
下面参考图3,其示出了根据本发明的一个示例性实施例的用于调度共享作业槽的方法300的流程图。方法300可以被视为上文参考图2描述的方法200中的步骤S203的一种特定实现。
方法300开始之后,在步骤S301,确定前处理机的总体数据产生速度是否大于后处理机的总体数据消耗速度。如果是,则方法300进行到步骤S302。如上所述,当一个作业的执行初始被启动时,通常所有的作业槽将被分配给前处理机,例如MapReduce模式中的映射器。此时,前处理机的总体数据产生速度远大于后处理机的总体数据消耗速度。因此,在作业执行的初始阶段,方法300将比较可能执行步骤S302。
在步骤S302处,选择至少一个前处理机,使得被分配给所选择的至少一个前处理机的作业槽被重新分配给至少一个后处理机(例如,化简器)。换言之,此时,在至少一个作业槽上,将上游任务换出,同时将下游任务换入。特别地,根据本发明的某些实施例,这种切换需要在前处理机所执行的上游任务完成之后执行。例如,在MapReduce模式中,通常需要在映射器所执行的映射任务完成之后,在将相关联的作业槽重新分配给化简器。
根据本发明的实施例,可以按照前处理机完成当前任务的时间顺序来选择将被换出的前处理机。具体地,在这样的实施例中,从确定需要执行调度动作的时刻开始,最先完成当前上游任务的一个或多个前处理机将被换出。备选地或附加地,可以将前处理机的任务处理能力纳入考虑。例如,对于一个完成了当前上游任务的前处理机,如果其数据馈送速度(即,该前处理机在单位时间内向所有后处理机馈送的数据量)小于预定阈值,则可以跳过该前处理机而不将其换出。以此方式,可以优先将数据产生速度较大的前处理机换出,从而确保系统中的失衡被较快地消除。
根据本发明的实施例,可以根据各种标准来选择将要被换入的后处理机。例如,在某些实施例中,可以随机选择后处理机。备选地,可以根据所有前处理机向每个后处理机馈送数据的速度,来选择将要为其分配作业槽的后处理机。具体而言,对于每个后处理机,可以系统中的所有计算前处理机在单位时间内向该后处理机馈送的数据量,即,数据馈送速度(记为G)。这样,可以选择G值最大的一个或多个后处理机。将会理解,这有利于较为迅速地消除系统中的失衡。
根据本发明的某些实施例,还可以附加地考虑前处理机向每个后处理机的数据馈送的本地化(10cality)水平。可以理解,对于一个后处理机,如果向其馈送数据的很多前处理机与其位于不同的节点上,则可能导致比较显著的数据传输开销。根据本发明的实施例,通过将数据馈送的本地化水平纳入考虑,可以有效地避免由于在不同节点之间传输数据而引起的开销。下面将参考图4描述一个这方面的示例。
考图4示出了一个用于选择后处理机的方法400的框图。方法400开始之后,在步骤S401,对于一个候选后处理机,确定所有前处理机向该后处理机馈送数据的速度G。
接下来,在步骤S402,确定与该后处理机相关联的数据馈送的本地化水平。为此,对于每个候选的后处理机,可以确定与该后处理机处于同一物理节点的那些前处理机向该后处理机的数据馈送速度(记为A)。在这样的实施例中,可以在步骤S402处计算比率值L=A/G,用以表征与该候选后处理机相关联的数据馈送的本地化水平。
方法400继而进行到步骤S403,在此对后处理机的数据馈送速度与数据馈送的本地化水平进行权衡。例如,在某些实施例中,可以通过加权平均的方式来计算针对给定后处理机的权衡标准:
P=αG/M+(1-α)L
其中α是例如处于范围[0,1]的加权系数,M是所有前处理机向所述后处理机馈送数据的合计速度。特别地,在某些实施例中,网络带宽资源可能比较稀缺,并且因此对于系统性能至关重要。在这些实施例中,可以设置系数α=0。此时,权衡标准P将仅仅基于数据馈送的本地化水平L来确定。反之,当网络带宽资源比较充裕时,可以设置系数α=1,从而仅考虑当前后处理机的数据馈送速度。
特别地,在某些实施例中,也可以直接赋予数据馈送速度和数据馈送本地化水平以相等的权重。此时,在步骤S403可以如下计算P’作为权衡标准:
P’=G/M+L
在上文的实施例中,G/M表示当前后处理机的数据馈送速度占前处理机向后处理机的合计数据馈送速度的比例。这是后处理机的数据馈送速度的一个相对度量。换言之,在这些实施例中,G相对于M被归一化。这种归一化并非是必须的。备选地,可以直接使用当前后处理机的数据馈送数据G的数值。例如,在上文计算P和P’的公式中,可以将G/M替换为G。
在接下来的步骤S404,确定是否还有其他待处理的候选后处理机。如果有,方法400返回步骤S401继续执行。否则,方法400进行到步骤S405,在此选择P或者P’的值最大的一个或多个后处理机,为其分配作业槽。可以理解,P或者P’值最大的后处理机具有在数据馈送速度与数据馈送本地化水平之间的最优权衡。选择这样的后处理有助于最大限度地降低甚至消除系统中的失衡。
参考图5,其示出了利用方法400来选择后处理机的一个具体示例的示意图。在图5所示的示例中,作业按照MapReduce模式被处理。特别地,假设存在8个负责执行映射任务的映射器。而且,假设存在2个节点,每个节点上分布有2个作业槽。最初,所有4个作业槽都被分配给映射器。在一段时间之后,通过计算可以发现映射器的数据产生速度远大于化简器的数据处理速度(在这种情况下,化简器的数据处理速度为零)。由此,可以在映射器501执行完成之后,将分配给映射器501的作业槽重新分配给一个化简器。
根据方法400,可以计算与每个候选化简器相关联的数据馈送速度G。例如,考虑一个化简器R0,假设最初运行的四个映射器501-504向其馈送数据的速度分别为1、2、3、4。由此,化简器R0的数据馈送速度为G=1+2+3+4=10。另外,可以计算该化简器R0的数据馈送的本地化水平。在此例中,如果R0被选择,则原先分配给映射器501的、位于节点505上的作业槽将被分配给R0。由此,映射器501和502是与R0处于同一节点的映射器,其向映射器501的数据馈送速度分别为1和2。这样,化简器R0的数据本地化水平L可以被计算为L=A/G=(1+2)/10=0.3。
假设所有映射器向所有化简器输出数据的速度为M=30。例如可以计算针对R0的P’=G/M+L=10/30+0.3=0.63。类似地,可以计算其他化简器的P’,并且选择P’最大的那个化简器以为其分配作业槽。
请注意,根据本发明的实施例,上文参考图4描述的选择后处理机的方法同样适用于前处理机的选择。换言之,可以基于该前处理机的数据产生速度和向后处理机的数据馈送的本地化水平中的至少一项,来选择将要被换出的前处理机,具体细节在此不再赘述。
返回图3,如果在在步骤S301处确定前处理机的总体数据产生速度小于后处理机的总体数据消耗速度(分支“否”),则方法300进行到步骤S303,在此将分配给至少一个后处理机的作业槽,重新分配给至少一个前处理机。特别地,根据本发明的实施例,重新分配无需等待后处理机所执行的下游任务完成(尽管这样做当然也是可行的)。例如,在MapReduce模式中,可以在所选择的将要被换出的至少一个后处理机(化简器)所执行的下游任务结束之前,抢占与该后处理机相关联的作业槽。以此方式,可以使系统中的失衡得到较为迅速的处理,从而缩短调度的响应时间。
前面已经参考附图描述了实现本发明的方法的各个实施例。本领域技术人员可以理解的是,上述方法既可以以软件方式实现,也可以以硬件方式实现,或者通过软件与硬件相结合的方式实现。并且,本领域技术人员可以理解,通过以软件、硬件或者软硬件相结合的方式实现上述方法中的各个步骤,可以提供一种基于相同发明构思的用于作业执行中的进行调度的装置。即使该装置在硬件结构上与通用处理设备相同,由于其中所包含的软件的作用,使得该装置表现出区别于通用处理设备的特性,从而形成本发明的各个实施例的装置。本发明中所述装置包括若干单元或模块,所述单元或模块被配置为执行相应步骤。本领域的所述技术人员通过阅读本说明书可以理解如何编写程序实现所述单元或模块执行的动作。下面将参考附图6具体描述根据本发明的各个实施例的用于调度由一个或多个前处理机和一个或多个后处理机共享的多个作业槽的装置。由于所述装置与方法基于相同的发明构思,因此其中相同或相应的实现细节同样适用于与上述方法对应的装置,由于其在上文中已经进行了详细和完整的描述,因此在下文中可能不再进行赘述。
参考图6,其示出了根据本发明的实施例的在执行作业中调度由一个或多个前处理机和一个或多个后处理机共享的多个作业槽的装置600的框图。如上所述,所述前处理机用于执行所述作业的上游任务,所述后处理机用于执行所述作业的下游任务。如图所示,所述装置600包括:产生速度确定单元601,被配置为确定所述前处理机的总体数据产生速度;消耗速度确定单元602,被配置为确定所述后处理机的总体数据消耗速度;以及调度单元603,被配置为基于所述总体数据产生速度和所述总体数据消耗速度,调度至少一个所述作业槽在所述前处理机和所述后处理机之间的分配。
在某些可选实施例中,调度单元603可以包括:第一重新分配单元,被配置为如果所述总体数据产生速度大于所述总体数据消耗速度,则在所述前处理机中的至少一个前处理机所执行的上游任务完成之后,将分配给所述至少一个前处理机的作业槽重新分配给所述后处理机的至少一个后处理机。
在某些可选实施例中,装置600还可以包括后处理机选择单元,被配置为基于以下至少一项来选择所述至少一个后处理机:所述前处理机向所述至少一个后处理机的数据馈送的速度;以及所述前处理机向所述至少一个后处理机的数据馈送的本地化水平。特别地,在某些可选实施例中,装置600可以包括本地化确定单元,被配置为基于以下因素确定所述数据馈送的本地化水平:所述前处理机向所述至少一个后处理机的数据馈送的所述速度;以及与所述至少一个后处理机处于相同节点的前处理机向所述至少一个后处理机的数据馈送的速度。
在某些可选实施例中,调度单元603可以包括:第二重新分配单元,被配置为如果所述总体数据产生速度小于所述总体数据消耗速度,将分配给所述后处理机中的至少一个后处理机的作业槽,重新分配给所述前处理机的至少一个前处理机。在某些可选实施例中,第二重新分配单元可以包括:抢占单元,被配置为在所述至少一个后处理机所执行的下游任务结束之前抢占所述作业槽。
在某些可选实施例中,当作业根据MapReduce模式被处理时,所述前处理机可以包括一个或多个映射器,并且所述后处理机可以包括一个或多个化简器。
请注意,为清晰起见,图6中没有示出装置所包含的可选单元或者子单元。然而,应当理解,上文所描述的所有特征和操作均适用于装置600,在此不再赘述。而且,各装置中的单元或子单元的划分不是限制性的而是示例性的,旨在从逻辑上描述其主要功能或操作。一个单元的功能可以由多个单元来实现;反之,多个单元亦可由一个单元来实现。本发明的范围在此方面不受限制。而且,上文描述的装置600中所包含的单元可以利用各种方式来实现,包括软件、硬件、固件或其任意组合。
上文已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所公开的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文公开的各实施例。
Claims (14)
1.一种在执行作业中调度由一个或多个前处理机和一个或多个后处理机共享的多个作业槽的方法,所述前处理机产生的数据将被馈送给所述后处理机以便处理,所述方法包括:
确定所述前处理机的总体数据产生速度;
确定所述后处理机的总体数据消耗速度;以及
基于所述总体数据产生速度和所述总体数据消耗速度,调度至少一个所述作业槽在所述前处理机和所述后处理机之间的分配,以降低所述总体数据产生速度和所述总体数据消耗速度之间的失衡。
2.根据权利要求1所述的方法,其中基于所述总体数据产生速度和所述总体数据消耗速度,调度至少一个所述作业槽在所述前处理机和所述后处理机之间的分配包括:
如果所述总体数据产生速度大于所述总体数据消耗速度,则在所述前处理机中的至少一个前处理机所执行的上游任务完成之后,将分配给所述至少一个前处理机的作业槽重新分配给所述后处理机的至少一个后处理机。
3.根据权利要求2所述的方法,其中所述至少一个后处理机至少基于以下至少一项来选择:
所述前处理机向每个后处理机的数据馈送的速度;以及
所述前处理机向每个后处理机的数据馈送的本地化水平。
4.根据权利要求3所述的方法,对于每个后处理机,其中所述数据馈送的本地化水平基于以下因素确定:
所述前处理机向所述后处理机的数据馈送的所述速度;以及
与所述后处理机处于相同节点的前处理机向所述后处理机的数据馈送的速度。
5.根据权利要求1所述的方法,其中基于所述总体数据产生速度和所述总体数据消耗速度,调度至少一个所述作业槽在所述前处理机和所述后处理机之间的分配包括:
如果所述总体数据产生速度小于所述总体数据消耗速度,将分配给所述后处理机中的至少一个后处理机的作业槽,重新分配给所述前处理机的至少一个前处理机。
6.根据权利要求5所述的方法,其中重新分配给所述前处理机的至少一个前处理机包括:
在所述至少一个后处理机所执行的下游任务结束之前抢占所述作业槽。
7.根据权利要求1-6任一项所述的方法,其中所述前处理机包括一个或多个映射器,并且所述后处理机包括一个或多个化简器。
8.一种在执行作业中调度由一个或多个前处理机和一个或多个后处理机共享的多个作业槽的装置,所述前处理机产生的数据将被馈送给所述后处理机以便处理,所述装置包括:
产生速度确定单元,被配置为确定所述前处理机的总体数据产生速度;
消耗速度确定单元,被配置为确定所述后处理机的总体数据消耗速度;以及
调度单元,被配置为基于所述总体数据产生速度和所述总体数据消耗速度,调度至少一个所述作业槽在所述前处理机和所述后处理机之间的分配,以降低所述总体数据产生速度和所述总体数据消耗速度之间的失衡。
9.根据权利要求8所述的装置,其中所述调度单元包括:
第一重新分配单元,被配置为如果所述总体数据产生速度大于所述总体数据消耗速度,则在所述前处理机中的至少一个前处理机所执行的上游任务完成之后,将分配给所述至少一个前处理机的作业槽重新分配给所述后处理机的至少一个后处理机。
10.根据权利要求9所述的装置,还包括后处理机选择单元,被配置为基于以下至少一项来选择所述至少一个后处理机:
所述前处理机向每个后处理机的数据馈送的速度;以及
所述前处理机向每个后处理机的数据馈送的本地化水平。
11.根据权利要求10所述的装置,还包括本地化确定单元,被配置为对于每个后处理机,基于以下因素确定所述数据馈送的本地化水平:
所述前处理机向所述后处理机的数据馈送的所述速度;以及
与每个后处理机处于相同节点的前处理机向所述后处理机的数据馈送的速度。
12.根据权利要求8所述的装置,其中所述调度单元包括:
第二重新分配单元,被配置为如果所述总体数据产生速度小于所述总体数据消耗速度,将分配给所述后处理机中的至少一个后处理机的作业槽,重新分配给所述前处理机的至少一个前处理机。
13.根据权利要求12所述的装置,其中所述第二重新分配单元包括:
抢占单元,被配置为在所述至少一个后处理机所执行的下游任务结束之前抢占所述作业槽。
14.根据权利要求8-13任一项所述的装置,其中所述前处理机包括一个或多个映射器,并且所述后处理机包括一个或多个化简器。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310531204.3A CN104598304B (zh) | 2013-10-31 | 2013-10-31 | 用于作业执行中的调度的方法和装置 |
US14/528,595 US9417924B2 (en) | 2013-10-31 | 2014-10-30 | Scheduling in job execution |
US15/083,404 US9471387B2 (en) | 2013-10-31 | 2016-03-29 | Scheduling in job execution |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310531204.3A CN104598304B (zh) | 2013-10-31 | 2013-10-31 | 用于作业执行中的调度的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104598304A CN104598304A (zh) | 2015-05-06 |
CN104598304B true CN104598304B (zh) | 2018-03-13 |
Family
ID=52997009
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310531204.3A Active CN104598304B (zh) | 2013-10-31 | 2013-10-31 | 用于作业执行中的调度的方法和装置 |
Country Status (2)
Country | Link |
---|---|
US (2) | US9417924B2 (zh) |
CN (1) | CN104598304B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2016018534A (ja) * | 2014-07-11 | 2016-02-01 | キヤノン株式会社 | サーバ、ジョブ管理システム、ジョブ管理方法及びプログラム |
CN105930203B (zh) * | 2015-12-29 | 2019-08-13 | 中国银联股份有限公司 | 一种控制消息分发的方法及装置 |
CN107526631B (zh) * | 2017-09-01 | 2021-01-08 | 百度在线网络技术(北京)有限公司 | 一种任务监控方法、装置、设备和介质 |
CN111090501B (zh) * | 2018-10-23 | 2024-05-28 | 深信服科技股份有限公司 | 任务调度方法、装置、设备及计算机可读存储介质 |
CN112950447B (zh) * | 2019-12-10 | 2023-04-28 | 浙江宇视科技有限公司 | 资源调度方法、装置、服务器及存储介质 |
CN114579401B (zh) * | 2022-02-28 | 2024-07-09 | 北京字节跳动网络技术有限公司 | 一种任务检测方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102629219A (zh) * | 2012-02-27 | 2012-08-08 | 北京大学 | 并行计算框架中的Reduce端自适应负载均衡方法 |
CN103023805A (zh) * | 2012-11-22 | 2013-04-03 | 北京航空航天大学 | 一种MapReduce系统 |
CN103218263A (zh) * | 2013-03-12 | 2013-07-24 | 北京航空航天大学 | MapReduce参数的动态确定方法及装置 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012144985A1 (en) * | 2011-04-19 | 2012-10-26 | Hewlett-Packard Development Company, L.P. | Scheduling map and reduce tasks of jobs for execution according to performance goals |
US20120304186A1 (en) * | 2011-05-26 | 2012-11-29 | International Business Machines Corporation | Scheduling Mapreduce Jobs in the Presence of Priority Classes |
US9128763B2 (en) * | 2011-08-23 | 2015-09-08 | Infosys Limited | System and method for job scheduling optimization |
US9201690B2 (en) * | 2011-10-21 | 2015-12-01 | International Business Machines Corporation | Resource aware scheduling in a distributed computing environment |
US8732720B2 (en) * | 2011-12-22 | 2014-05-20 | Hewlett-Packard Development Company, L.P. | Job scheduling based on map stage and reduce stage duration |
US9141430B2 (en) * | 2012-04-30 | 2015-09-22 | Hewlett-Packard Development Company, L.P. | Scheduling mapreduce job sets |
US8924977B2 (en) * | 2012-06-18 | 2014-12-30 | International Business Machines Corporation | Sequential cooperation between map and reduce phases to improve data locality |
US9032416B2 (en) * | 2012-07-30 | 2015-05-12 | Oracle International Corporation | Load balancing using progressive sampling based on load balancing quality targets |
US9152469B2 (en) * | 2013-01-28 | 2015-10-06 | Hewlett-Packard Development Company, L.P. | Optimizing execution and resource usage in large scale computing |
US9183016B2 (en) * | 2013-02-27 | 2015-11-10 | Vmware, Inc. | Adaptive task scheduling of Hadoop in a virtualized environment |
CN104035747B (zh) * | 2013-03-07 | 2017-12-19 | 伊姆西公司 | 用于并行计算的方法和装置 |
US9727355B2 (en) * | 2013-08-23 | 2017-08-08 | Vmware, Inc. | Virtual Hadoop manager |
-
2013
- 2013-10-31 CN CN201310531204.3A patent/CN104598304B/zh active Active
-
2014
- 2014-10-30 US US14/528,595 patent/US9417924B2/en not_active Expired - Fee Related
-
2016
- 2016-03-29 US US15/083,404 patent/US9471387B2/en not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102629219A (zh) * | 2012-02-27 | 2012-08-08 | 北京大学 | 并行计算框架中的Reduce端自适应负载均衡方法 |
CN103023805A (zh) * | 2012-11-22 | 2013-04-03 | 北京航空航天大学 | 一种MapReduce系统 |
CN103218263A (zh) * | 2013-03-12 | 2013-07-24 | 北京航空航天大学 | MapReduce参数的动态确定方法及装置 |
Non-Patent Citations (1)
Title |
---|
Dynamic slot allocation technique for MapReduce clusters;Shanjiang Tang, Bu-Sung Lee, Bingsheng He;《Cluster Computing (CLUSTER), 2013 IEEE International Conference》;20130927;第1-8页 * |
Also Published As
Publication number | Publication date |
---|---|
US20150121392A1 (en) | 2015-04-30 |
US9471387B2 (en) | 2016-10-18 |
US9417924B2 (en) | 2016-08-16 |
CN104598304A (zh) | 2015-05-06 |
US20160210171A1 (en) | 2016-07-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104598304B (zh) | 用于作业执行中的调度的方法和装置 | |
US9501318B2 (en) | Scheduling and execution of tasks based on resource availability | |
US9262220B2 (en) | Scheduling workloads and making provision decisions of computer resources in a computing environment | |
CN104252391B (zh) | 用于在分布式计算系统中管理多个作业的方法和装置 | |
US8595735B2 (en) | Holistic task scheduling for distributed computing | |
US20140380320A1 (en) | Joint optimization of multiple phases in large data processing | |
US8527988B1 (en) | Proximity mapping of virtual-machine threads to processors | |
CN110990154B (zh) | 一种大数据应用优化方法、装置及存储介质 | |
US9104491B2 (en) | Batch scheduler management of speculative and non-speculative tasks based on conditions of tasks and compute resources | |
US20230136661A1 (en) | Task scheduling for machine-learning workloads | |
US11995016B2 (en) | Input/output command rebalancing in a virtualized computer system | |
CN108427602B (zh) | 一种分布式计算任务的协同调度方法及装置 | |
KR20140097815A (ko) | 자원 할당 방법 및 그 장치 | |
CN114579284A (zh) | 任务调度方法及装置 | |
CN114416357A (zh) | 容器组的创建方法、装置、电子设备和介质 | |
Sharma et al. | A credits based scheduling algorithm with K-means clustering | |
US20140047454A1 (en) | Load balancing in an sap system | |
US20210334144A1 (en) | Resource allocation | |
CN107562510A (zh) | 一种应用实例的管理方法及管理设备 | |
Thai et al. | Algorithms for optimising heterogeneous Cloud virtual machine clusters | |
Mahesar et al. | Efficient Workflow Scheduling and Cost Optimization for Deadline-Constrained Microservice Applications in Mobile Edge Computing | |
CN115145714B (zh) | 容器实例的调度方法、装置和系统 | |
EP4435600A1 (en) | Systems and methods for executing compute functions | |
US20230050163A1 (en) | Apparatuses and methods for scheduling computing resources | |
CN110750354B (zh) | 一种vCPU资源分配方法、装置和计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |