CN112148471A - 分布式计算系统中资源调度的方法和装置 - Google Patents
分布式计算系统中资源调度的方法和装置 Download PDFInfo
- Publication number
- CN112148471A CN112148471A CN201910581172.5A CN201910581172A CN112148471A CN 112148471 A CN112148471 A CN 112148471A CN 201910581172 A CN201910581172 A CN 201910581172A CN 112148471 A CN112148471 A CN 112148471A
- Authority
- CN
- China
- Prior art keywords
- task
- tasks
- spark
- resource
- spark 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
Images
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/5083—Techniques for rebalancing the load in a distributed system
- G06F9/5088—Techniques for rebalancing the load in a distributed system involving task migration
-
- 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
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
- Multi Processors (AREA)
Abstract
本申请提供了提供一种分布式计算系统中资源调度的方法和装置,该方法包括:获取所述分布式计算系统中待处理的批任务中每个spark任务的累积分配资源;根据所述批任务中每个spark任务的累积分配资源,为所述批任务中每个spark任务分配执行器。在本申请实施例中,基于批任务中每个spark任务的累积分配资源,为所述批任务中每个spark任务分配执行器,有利于缩短分布式计算系统处理批任务的时间。避免了传统的资源分配时,仅基于工作节点的处理能力为批任务分配执行器。导致小任务被分配的执行器的规格较高,大任务被分配的规格较小,导致小的任务早早被处理完成,大的任务还在被执行,总体上使得批任务的处理时间较长。
Description
技术领域
本申请涉及信息技术领域,并且更具体地,涉及分布式计算系统中资源调度的方法和装置。
背景技术
Spark提供的弹性分布式数据集(Resilient Distributed Dataset,RDD)技术可以在内存中的迭代计算,与MapReduce相比性能大幅度提升,成为非常流行的开源分布式计算框架。Spark通常与hadoop一起部署,替代hadoop中的MapReduce组件提供计算功能,同时利用hadoop的分布式文件系统(Hadoop Distributed File System,HDFS)做为存储组件,利用hadoop的另一种资源协调者(Yet Another Resource Negotiator,Yarn)做资源管理组件,以此提供分布式计算服务。
通常,在用户提交一个Spark作业之后,这个Spark作业就会启动一个对应的驱动(driver)进程。驱动进程需要向集群管理器申请运行Spark作业的执行器(executor)。相应地,集群管理器会根据用户为Spark作业设置的资源参数,在集群中的各个工作节点上,启动一定数量的执行器,每个执行器都占有一定数量的内存和CPU core。在申请到执行Spark作业所需的资源之后,驱动进程会将Spark作业拆为多个阶段(stage),每个阶段执行一部分Spark作业。为了提高执行Spark作业的每个阶段的速度,会进一步为每个阶段创建一批Spark任务,即批任务。然后将批任务分配到各个执行器并行处理。
对于批任务而言,直到批任务中的最后一个任务被处理完成,该批任务才算被真正的处理完成,目前,在为批任务申请资源时,通常是基于工作节点的处理能力为批任务分配执行器。此时,有可能小任务被分配的执行器的规格较高,大任务被分配的规格较小,导致小的任务早早被处理完成,大的任务还在被执行,总体上使得批任务的处理时间较长。
发明内容
本申请提供一种分布式计算系统中资源调度的方法和装置,以合理为spark任务分配计算资源,有利于缩短分布式计算系统处理批任务的时间。
第一方面,提供一种分布式计算系统中资源调度的方法,包括:获取所述分布式计算系统中待处理的批任务中每个spark任务的累积分配资源;根据所述批任务中每个spark任务的累积分配资源,为所述批任务中每个spark任务分配执行器。
在本申请实施例中,基于批任务中每个spark任务的累积分配资源,为所述批任务中每个spark任务分配执行器,有利于缩短分布式计算系统处理批任务的时间。避免了传统的资源分配时,仅基于工作节点的处理能力为批任务分配执行器。导致小任务被分配的执行器的规格较高,大任务被分配的规格较小,导致小的任务早早被处理完成,大的任务还在被执行,总体上使得批任务的处理时间较长。
在一种可能的实现方式中,所述分布式计算系统包括第一任务集合和第二任务集合,所述第一任务集合中的任务通过第一执行器集合中的执行器执行,所述第二任务集合中的任务通过第二执行器集合中的执行器执行,所述第一执行器集合中的执行器的规格与所述第二执行器集合中执行器的规格不同,所述根据所述批任务中每个spark任务的累积分配资源,为所述批任务中每个spark任务分配执行器,包括:根据所述批任务中每个spark任务的累积分配资源,将所述批任务中每个spark任务划分至所述第一任务集合或所述第二任务集合,使得所述第一任务集合中每个spark任务的累积分配资源高于所述第二任务集合中每个spark任务的累积分配资源;从所述第一执行器集合中为所述第一任务集合中的spark任务分配执行器;从所述第二执行器集合中为所述第一任务集合中的spark任务分配执行器。
在本申请实施例中,将批任务中的多个spark任务按照任务的累积分配资源划分至第一任务集合和第二任务集合,使得第一任务集合中每个spark任务的累积分配资源高于所述第二任务集合中每个spark任务的累积分配资源,并为每个集合配置不同规格的执行器结合,以执行对应任务集合中的任务。有利于提高为spark任务合理分配执行器的合理性。
在一种可能的实现方式中,所述方法还包括:获取目标任务集合中spark任务的任务特征,所述目标任务集合为所述第一任务集合或所述第二任务集合;根据所述目标任务集合中spark任务的任务特征,以及预配置的多个候选资源配置参数,通过Q-learning模型确定所述目标任务集合的资源配置参数。
在本申请实施例中,基于Q-learning模型确定所述目标任务集合的资源配置参数,有利于提高确定资源配置参数的合理性。
在一种可能的实现方式中,所述方法还包括:若所述批任务中的第一spark任务执行失败,将所述第一spark任务存储到逃逸队列中。
在本申请实施例中,将执行失败的任务存储到逃逸队列中,以便后续继续执行,有利于提高成功执行spark任务的概率。
第二方面,提供一种分布式计算系统中资源调度的方法,包括:获取所述分布式计算系统中待执行的第一spark任务的计算资源消耗趋势,所述计算资源消耗趋势用于指示所述第一spark任务在执行过程中消耗的所述分布式计算系统的计算资源的使用量随时间的变化;在所述第一spark任务的执行过程中,根据所述第一spark任务的所述计算资源消耗趋势,调整为所述第一spark任务分配的分布式系统的计算资源。
在本申请实施例中,在所述第一spark任务的执行过程中,根据所述第一spark任务的所述计算资源消耗趋势,调整为所述第一spark任务分配的分布式系统的计算资源,有利于提高计算资源的利用率。
在一种可能的实现方式中,所述计算资源消耗趋势包括所述目标spark任务在执行过程中消耗的所述分布式计算系统的计算资源的使用量的波峰和波谷,其中,在所述波峰出现的第一时间段内为所述spark任务分配的所述分布式系统的第一计算资源大于在所述波谷出现的第二时间段内为所述spark任务分配的所述分布式系统的第二计算资源。
在一种可能的实现方式中,所述根据所述第一spark任务的所述计算资源消耗趋势,调整为所述第一spark任务分配的分布式系统的计算资源,包括:根据所述第一spark任务的所述计算资源消耗趋势,确定所述第一spark任务的第一计算资源调整时刻,所述第一计算资源调整时刻位于所述第一时间段与所述第二时间段之间;当所述spark任务的执行时间为所述第一计算资源调整时刻时,根据所述第一计算资源以及所述第二计算资源,调整为所述第一spark任务分配的所述分布式系统的计算资源。
在一种可能的实现方式中,所述第一spark任务存储在第一等待队列中,所述第一等待队列为所述分布式计算系统包括多个等待队列中的一个等待队列,所述多个等待队列中不同的等待队列中存储的spark任务的计算资源调整时间不同,同一个等待队列中存储的多个spark任务的计算资源调整时间相同。
需要说明的是,上文中的等待队列可以是下文中的队列。上文中的spark任务可以是下文中的任务。
第二方面,提供了一种分布式计算系统中资源调度的装置,所述装置包括用于执行上述方法的各个模块。
第三方面,提供了一种服务器,包括至少一个处理器和至少一个存储器。该至少一个存储器用于存储计算机程序,该至少一个处理器用于从存储器中调用并运行该计算机程序,使得该存储系统执行上述方法。
需要说明的是,上述至少一个处理器和至少一个存储器可以位于多个不同的存储节点中,还可以位于相同的存储节点中。
第四方面,提供了一种计算机程序产品,所述计算机程序产品包括:计算机程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行上述各方面中的方法。
需要说明的是,上述计算机程序代码可以全部或者部分存储在第一存储介质上,其中第一存储介质可以与处理器封装在一起的,也可以与处理器单独封装,本申请实施例对此不作具体限定。
第五方面,提供了一种计算机可读介质,所述计算机可读介质存储有程序代码,当所述计算机程序代码在计算机上运行时,使得计算机执行上述各方面中的方法。
附图说明
图1是本申请实施例的适用的分布式计算系统的架构图。
图2是本申请实施例的分布式计算系统中资源调度的方法的流程图。
图3是本申请实施例的分布式计算系统中资源调度的方法的流程图。
图4示出了本申请实施例的任务的组织形式的示意图。
图5是本申请实施例的解空间1和解空间2之间关系的示意图。
图6是本申请实施例的队列级资源分配的示意图。
图7是本申请实施例的组级资源分配的示意图。
图8是本申请实施例的确定资源参数的方法。
图9是本申请实施例的基于Q-table确定最佳资源参数的示意图。
图10是本申请实施例的批级资源分配的示意图。
图11是本申请实施例的一种分布式计算系统中资源调度的装置的示意图。
图12是本申请实施例的一种分布式计算系统中资源调度的装置的示意图。
图13是本申请实施例的服务器的示意图。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
为了便于理解本申请,下文先介绍本申请涉及的术语。
基于历史的优化(History Based Optimization,HBO),分析历史运行日志,根据历史运行过程中的最佳方式执行新的任务。
弹性分布式数据集(Resilient Distributed Dataset,RDD)spark使用的最小数据集合,将RDD读入内存中做迭代计算,在迭代计算完成后将数据持久化到HDFS上。
Spark配置(Spark Context,SC),在spark运行环境中,为任务启动的spark配置环境,即根据用户配置的参数在SC中建立多个具有一定规格的执行器(executors)。
累积分配资源(Cumulative Allocated Resource,CAR),用于描述spark中为某一任务分配的资源关于其执行时间的积分,描述任意任务对spark资源的占用情况。
另一种资源协调者(Yet Another Resource Negotiator,Yarn),是一种新的Hadoop资源管理器,它是一个通用资源管理系统,可为上层应用提供统一的资源管理和调度。
MapReduce:一种分布式计算模型,将计算过程分为映射(map)阶段和归约(reduce)阶段,各阶段支持计算任务并行执行。
任务(task):spark中最小的运行单元,每个任务运行时可以占用中央处理器(Central Processing Unit,CPU)内核或虚拟内核(virtual core,vcore),以及一定数量的内存。
执行器(executor):执行spark任务的容器。执行器之间相互隔离,根据用户资源参数建立对应的执行器规格,每个执行器中包括一定数量的cpu内核/虚拟内核,以及内存,内核/vcore之间相互独立,所有cpu内核/vcore共享执行器中的内存。
资源供给参数:spark为其上运行的任务分配资源时配置的参数,包括执行器个数、执行器规格、并行数等影响资源供给方式的参数。
错峰特征:一批spark任务中每个任务的峰值出现的时间点不一致,可以将某些任务的低峰和其它任务的高峰放在一起,此时spark整体资源消耗较小。
长尾效应:一批spark任务中某些任务的入口数据量较小,有些任务的入口数据量较大,由于spark执行时的并行和资源隔离特征,数据量较小的任务在很短的时间内就执行完了,但是数据量较大的任务获得的资源较少,持续执行时间长,造成整个批任务的执行时间较长,称之为长尾效应。
解空间(solution space),求解一个问题的最优解时,可行解组成的空间。
Q-learning:一种基于值的强化学习方法,计算每一个状态下执行某个动作的Q值,根据Q值确定给定状态下的最佳动作。
Q-table:Q-learning中所有Q值组织起来的矩阵形成Q-table。Q-table中每一行的标志为Q-learning算法中定义的状态空间中的任意一个状态,Q-table中每一列的标志为Q-learning算法中定义的动作空间中任意一个动作。
片段(episode):Q-learning算法在训练过程中的一次尝试过程,在每一个episode尝试过程中,根据状态确定动作,在状态下执行动作得到下一个状态,直至状态达到Q-learning算法中定义的终止条件,则完成了该次episode的训练过程。
spark配置的数量(sc_num):spark任务在执行过程中创建的sc的个数。可以作为使用强化学习确定给定spark任务对应的最佳资源供给参数中的一个参数。参数是执行任务时使用的。
下文结合图1介绍本申请实施例的适用的分布式计算系统的架构图。图1所示的分布式计算系统100包括调度模块110,spark执行引擎120,参数统计模块130以及分布式计算集群140。其中,spark执行引擎120与分布式计算集群140可以与传统的分布式计算系统中的spark执行引擎以及分布式计算集群的作用相同。调度模块110、参数统计模块130为本申请实施例新增的模块。
需要说明的是,实现上述新增模块对应功能的物理单元可以复用传统的分布式计算系统中的物理单元,还可以在分布式计算系统中新增上述新增的模块专用的物理单元。本申请实施例对此不作限定。
参数统计模块130,用于负责统计spark任务执行过程中的运行参数,例如,上述运行参数可以指示spark任务的性能,或者运行spark任务占用的计算资源以及存储资源等。
调度模块110,用于为待运行的spark任务分配计算资源或者存储资源。例如,可以从参数统计模块130处获取spark任务的运行参数,并基于获取的运行参数为spark任务分配计算资源,存储资源等。
可选地,上述调度模块还可以预存一种或多种调度策略,以支持下文介绍的调度方法。具体地,调度策略可以包括队列(queue)级调度策略,组(group)级调度策略,批(batch)级调度策略。其中,调度策略的具体含义将在下文中具体介绍。
可选地,上述调度模块还可以预存资源分配算法,资源分配算法可以是下文中介绍的基于Q-learning的资源分配算法。
分布式计算集群140,用于提供计算资源,例如,执行spark任务相关的计算任务。
Spark系统中,为了提高spark任务的处理效率,通常会以批为单位并行处理多个任务。对于批任务而言,直到批任务中的最后一个任务被处理完成,该批任务才算被真正的处理完成,目前,SC在为批任务申请资源时,通常是基于工作节点的处理能力为批任务分配执行器。此时,有可能小任务被分配的执行器的规格较高,大任务被分配的规格较小,导致小的任务早早被处理完成,大的任务还在被执行,总体上使得批任务的处理时间较长。
为了避免上述问题,本申请提供了一种分布式计算系统中资源调度的方法,按照批任务中每个spark任务的累积分配资源,为每个spark任务分配执行器。下文结合图2介绍本申请实施例的分布式计算系统中资源调度的方法,图2所示的方法包括步骤210和步骤220。应理解,图2所示的方法可以由图2所示的调度模块110执行。
210,获取所述分布式计算系统中待处理的批任务中每个spark任务的累积分配资源。
220,根据所述批任务中每个spark任务的累积分配资源,为所述批任务中每个spark任务分配执行器。
可选地,所述分布式计算系统包括第一任务集合和第二任务集合,所述第一任务集合中的任务通过第一执行器集合中的执行器执行,所述第二任务集合中的任务通过第二执行器集合中的执行器执行,所述第一执行器集合中的执行器的规格与所述第二执行器集合中执行器的规格不同,上述步骤220包括:根据所述批任务中每个spark任务的累积分配资源,将所述批任务中每个spark任务划分至所述第一任务集合或所述第二任务集合,使得所述第一任务集合中每个spark任务的累积分配资源高于所述第二任务集合中每个spark任务的累积分配资源;从所述第一执行器集合中为所述第一任务集合中的spark任务分配执行器;从所述第二执行器集合中为所述第一任务集合中的spark任务分配执行器。
可选地,所述方法还包括:获取目标任务集合中spark任务的任务特征,所述目标任务集合为所述第一任务集合或所述第二任务集合;根据所述目标任务集合中spark任务的任务特征,以及预配置的多个候选资源配置参数,通过Q-learning模型确定所述目标任务集合的资源配置参数。
可选地,所述方法还包括:若所述批任务中的第一spark任务执行失败,将所述第一spark任务存储到逃逸队列中。
当分布式计算系统中有spark任务需要执行时,资源管理器需要为spark任务分别申请计算资源,直到spark任务被执行完成后申请的计算资源才被释放。但是,在spark任务的执行过程中,spark任务实际使用的计算资源并不是固定不变的,有的时候高,有的时候低,导致分布式计算系统的计算资源的利用率也时高时低。
为了避免上述问题,本申请实施例还提供了一种分布式计算系统中资源调度的方法,即按照spark任务的计算资源消耗趋势,动态的为spark任务分配计算资源,以提高分配计算资源的合理性。
图3是本申请实施例的分布式计算系统中资源调度的方法的流程图,图3所示的方法包括步骤310和步骤320。
310,确定所述分布式计算系统中待执行的第一spark任务的计算资源消耗趋势,所述计算资源消耗趋势用于指示所述第一spark任务在执行过程中消耗的所述分布式计算系统的计算资源的使用量随时间的变化。
320,在所述第一spark任务的执行过程中,根据所述第一spark任务的所述计算资源消耗趋势,调整为所述第一spark任务分配的分布式系统的计算资源。
可选地,所述计算资源消耗趋势包括所述目标spark任务在执行过程中消耗的所述分布式计算系统的计算资源的使用量的波峰和波谷,其中,在所述波峰出现的第一时间段内为所述spark任务分配的所述分布式系统的第一计算资源大于在所述波谷出现的第二时间段内为所述spark任务分配的所述分布式系统的第二计算资源。
可选地,所述根据所述第一spark任务的所述计算资源消耗趋势,调整为所述第一spark任务分配的分布式系统的计算资源,包括:根据所述第一spark任务的所述计算资源消耗趋势,确定所述第一spark任务的第一计算资源调整时刻,所述第一计算资源调整时刻位于所述第一时间段与所述第二时间段之间;当所述spark任务的执行时间为所述第一计算资源调整时刻时,根据所述第一计算资源以及所述第二计算资源,调整为所述第一spark任务分配的所述分布式系统的计算资源。
可选地,所述第一spark任务存储在第一等待队列中,所述第一等待队列为所述分布式计算系统包括多个等待队列中的一个等待队列,所述多个等待队列中不同的等待队列中存储的spark任务的计算资源调整时间不同,同一个等待队列中存储的多个spark任务的计算资源调整时间相同。
上文中图2所示的方法与图3所示的方法可以单独使用,也可以结合使用。下文结合具体的例子介绍结合使用的以实现资源调度的方法。为了便于理解,图3所示的方法在下文中可以称为“队列级调度”,图2所示的方法可以称为“组级调度”。可选地,为了进一步提高资源调度的效率,还可以再新增一级批级调度。当然,批级调度也可以独立于组级调度以及队列级调度作为一种独立的调度方式使用。
图4示出了本申请实施例的任务的组织形式的示意图。图4所示的任务的组织形式可以按照上述不同级别的调度方法,划分为3级组织形式即队列级410,组级420以及批级430。
队列级410,用于根据任务的计算资源消耗趋势将其划入不同的队列,并动态调整各队列占用的资源比例,实现队列级调度,提升spark整体资源利用率。
组级420,对于落入不同队列内的任务,根据其消耗的资源量将其分为大小任务,将任务分别放在建立的大小组内,实现组级调度,避免大小任务执行时的长尾效应;
批级430,对于落入某个组中的任务,根据其历史上占用的资源关于其执行时长的积分,将其划定到不同的sc上,实现批级调度,对齐单个组内所有sc上任务的执行时间。
需要说明的是,图4所示的任务组织形式作为本申请实施例的spark智能调度方法的整体框架,完成两件事情:1)针对spark,完成任务的组织,分别实现队列级调度、组级调度、批级调度;2)针对yarn,根据spark上任务的组织形式,确定最佳的资源供给参数。下文分别介绍上述3种资源调度的方法。
一、队列级调度
以一天为一个调度周期,根据任务类型划分不同的队列,在不同时间段内动态调整为各个队列分配的资源比例。具体如下:
1)按照任务的调用周期划分任务类型,根据任务类型建立对应的队列,在每个队列中放入对应的任务;如果任务类型为N,则建立的队列的个数也为M;
2)建立优化模型,具体包括:
(a)定义待优化的N*1维向量,其中的M个元素包括:资源切换时间点、切换时间点前各队列占用的资源比例、资源切换时间点后各队列占用的资源比例,如果有M个队列,则N=2*M+1;
(b)定义各队列中批任务执行时间的上限约束,如time队列i<threshold队列i,并且对于资源切换时间点前后,各队列中批任务执行时间的上限约束一致;
(c)根据要达到的效果,定义对应的优化目标为各队列执行时间最短、资源利用率最高,或者剩余资源最多等。
应理解,执行时间最短和资源利用率最高的优化目标能够保证各队列中的任务快速执行完,但是系统的资源利用率波动较大;剩余资源最多的优化目标能够系统中预留出较多的空闲资源,但是各个队列内的任务在给定时间约束内的执行时间较长。
3)使用组合优化,或者进化计算算法根据上述模型求解对应的优化目标,如使用PSO算法收敛到适应度函数值最大或最小对应的向量上,得到上述问题的最优解,确定各个队列切换资源比例的时间点、切换时间点前各个队列的资源比例、切换时间点后各个队列的资源比例。
二、组级调度
针对每个队列内部,计算该队列内各任务的CAR,根据CAR区分大小组,保证每个组内部任务的CAR之和相差不大。在执行过程中,监控大小任务组中的任务执行情况,将执行失败的任务单独放入逃逸队列,当大小任务组中的任务执行完成后,再执行逃逸队列中的任务。具体如下:
1)计算各任务的CAR,CAR定义为各任务在执行期间得到的资源关于执行时间的积分,即CAR=∫rtdt,其中,t表示执行时间;r表示各任务在执行期间得到的资源;
2)将任务按照CAR从大到小排列,将所有任务放入小任务组;
3)从小任务组中按顺序取出任务,将其放入大任务组,计算大任务组中所有任务的CAR之和,并计算小任务组中剩余任务的CAR之和;
4)循环执行上述动作,直至大任务组中所有任务的CAR之和刚刚大于小任务组中所有剩余任务的CAR之和,确定大小任务组中的所有任务。
5)按照大小任务组的划分,并行执行大小任务组,或者串行执行大小任务组,执行完成后,将大小任务组中执行失败的任务放入逃逸队列中再重新执行。
需要说明的是,在本申请实施例中,上述“组”的概念可以是逻辑上的也可以是物理上真是存在的组。当组的概念是逻辑上的时,组可以通过SC标识体现,也就是说,可以通过SC的SC标识,将不同SC标识的SC划分到大任务组,和小任务组。这样,spark任务对应的SC标识如果是被划分到大任务组的,则该spark任务即属于大任务组。spark任务对应的SC标识如果是被划分到小任务组的,则该spark任务即属于小任务组。
在确定最佳资源参数的过程中,可以参照传统的资源参数确定方式。即通过HBO优化器从任务的历史日志中选取资源参数。具体地,HBO优化器是基于历史日志的优化器,对历史日志中出现的spark任务进行聚类,统计所有类别任务在历史运行过程中性能最佳时对应的资源供给参数;当有新的spark任务到来时,在历史聚类中查找相似的spark任务,选择该类别任务对应的最佳资源参数作为新spark任务执行时的资源参数。然而,正是由于HBO优化技术是从历史运行日志中选择最佳性能时对应的资源供给参数,而系统管理员一般都将资源参数配置的比较保守,以系统稳定运行为第一要务,因为HBO技术从一开始就已经将系统最优解的范围限制在一个较小的范围,而从历史记录中寻找最佳性能对应的资源参数时,得到的也不是全局最优解。如图5所示,HBO所得最优解的范围已经被管理员人为的限制在解空间(solution Space)1中,而系统本身的最优解范围是解空间2,导致HBO始终都无法得到spark系统运行时的最优解。
因此,为了避免上述问题,可以基于本申请提供的深度学习算法确定资源参数,需要说明的是,为了区分通过上述传统的方式确定的资源参数与使用本申请实施例的方法确定的资源参数,将使用本申请实施例的方法确定的资源参数成为“最佳资源参数”。
相应地,当确定各个组中包括的任务后,使用深度强化学习方法计算各个组对应的最佳资源参数,确保给定组中的任务能够以最佳性能运行,具体如下:
1)根据spark历史执行日志,根据组的特征对其聚类,记录聚类后每个类别的中心样本;
2)对于每一个类别中包括的组,使用深度学习方法训练样本,得到反映组特征和资源供给参数关系的预测模型。训练样本的输入为组的特征和资源供给参数,训练样本的输出为给定组在其对应的资源供给参数下的性能表现;
3)对于每一个类别的中心样本,使用强化学习方法探索对应该中心样本的组特征,在使用预测模型时得到的不同资源供给参数下的性能表现,通过强化学习的训练得到决策模型;
4)使用时,对于待分类的组,根据的特征,以聚类算法得到的类别为分类类型,使用分类算法确定待分类组的类型;
5)根据确定的类型选择为该类型样本建立的决策模型,根据决策模型得到该组的最佳资源参数。
三、批级调度
针对各个组中的任务及该组的最佳资源参数,根据最佳资源参数中的sc_num确定落入各个sc内的任务,具体如下:
1)建立批级调度的优化模型,具体如下:
(a)定义一个(sc_num*N)*1的向量,N表示组中任务的个数,sc_num为查询Q-table时确定的最佳资源参数中的sc个数;
(b)定义二值约束,即向量中各元素的取值为0或1,向量中每N个元素为一组,共sc_num组,表示组中对应的业务是否出现在对应的sc上,0表示组中对应的业务未落入对应的sc中,1表示组中对应的任务落入对应的sc中;
(c)定义优化目标,以落入各sc中的任务的CAR之和的标准方差最小为优化目标;
2)使用组合优化算法、或者进化计算算法,如PSO算法求解上述模型的最优解,最优解为(sc_num*N)*1的向量,向量中的取值为0或1,根据1的位置确定组中各任务落入到对应的sc中。
为了便于理解本申请,下文以电信业务为例,介绍本申请实施例的方法。需要说明的是,本申请实施例的还可以应用于其他数据的处理。使用本申请的方法为spark任务进行资源调度,基于电信数据的特性,可以以一天为一个周期,根据spark任务执行周期划分队列,动态调整各个队列的资源比例,在满足各队列内任务执行时间约束的前提下,提升spark资源利用率或预留的资源。
一、队列级调度
为了分析电信业务的流量的特征,在其中建立天粒度任务、小时粒度任务、15分钟粒度任务,这些任务分别间隔1天、1小时、15分钟重复执行。电信业务与流量的波峰波谷呈现强相关关系,即凌晨时,天任务启动,小时任务和15分钟任务由于流量处于波谷,其负载较低,工作时间段内,小时任务和15分钟任务由于流量处于波峰,其负载较高,但是此时天任务已经执行完成,不再占用资源。因此,在电信业务中,不同执行周期的业务呈现出典型的错峰特征。
队列级调度就是利用spark系统中业务的计算资源消耗趋势,动态调整为不同周期业务分配的资源比例,提升spark系统的资源利用率或剩余资源。具体的实施过程如下:
1)划分队列。spark系统中部署电信业务的天粒度任务、小时粒度任务、15分钟粒度任务,按照其执行周期分别将其划分到队列A、队列B和队列C中。
2)建立优化模型。图6示出了本申请实施例为队列A、队列B以及队列C分配计算资源的示意图。图6中O点表示00:00:00,B点表示23:59:59,OB为一天的周期,即24小时,资源调度需要确定A点位置。其中,A点之前和之后为天、小时、15分钟粒度任务分配的资源比例,建立如下优化模型:
(a)建立优化向量。将上述需要优化的值建成一个向量X,X为7*1维向量,该向量中包括的元素为:A点的位置tA,A点前队列A资源比例A点前队列B的资源比例A点前队列C的资源比例A点后队列A资源比例A点后队列B的资源比例A点后队列C的资源比例
(c)建立资源与任务执行时长的比例关系。由于任务周期执行,每天的任务基本相同,所以各个队列中任务的入口数据量和出口数据量相差不大,可以将各队列的入口数据量看作常量,将其定义为各个队列的执行时间与为其分配的资源呈现近似线性关系,从历史数据中计算该线性比例值得到各队列任务执行时长与资源和入口数据量之间的关系:
(d)建立优化目标。可以根据不同的优化目标定义优化目标适应度函数,如spark的剩余资源最大、各队列的执行时间最短,具体如下:
剩余资源最大:
各队列执行时间最短,可等价于spark系统利用率最大:
(e)使用PSO算法计算给定优化目标下优化向量的最优值。PSO算法中每个粒子即为上述定义的优化向量,粒子的个数定义为30,最大迭代次数设置为200,随机初始化粒子初始位置和速度,并根据下式迭代进化,迭代过程中使用优化目标中的适应度函数值更新粒子位置,迭代结束时,对应不同优化目标,所有粒子的适应度函数值最大或最小时对应的优化向量即为所得最优解。
其中,i表示第i个粒子,t表示迭代的次数;
ω为惯性变量,定义为0到1之间的常数;
c1、r1、c2、r2为常数,控制粒子群优化算法的优化速度和精度,速度越快,精度越差,反之,速度越慢,精度越高;
二、组级调度,即针对每个队列,根据落入该队列中任务的CAR,确定将哪些任务划为大组,哪些任务划入小组,避免任务执行过程中的长尾效应。图7示出了本申请实施例的组级资源分配的示意图。
对于一个队列中的所有任务,从历史执行日志中统计各个任务上次执行时分配到的资源及其执行时长,计算各个任务的CAR,再划分大任务组和小任务组。在执行过程中,监控任务的执行情况,将大小任务组中执行失败的任务摘出来,单独放入逃逸队列,执行完大任务组和小任务组中的任务后,再执行逃逸队列中的任务。具体如下:
2)将任务按照其CAR值从CARi大到小排列,将所有任务放入小任务组;
3)从小任务组中按顺序取出任务,将其放入大任务组,计算大任务组中所有任务的CAR之和CARgB,并计算小任务组中剩余任务的CAR之和CARgs;
4)循环执行上述动作,直至大任务组中所有任务的CAR之和CARgB刚刚大于小任务组中所有剩余任务的CAR之和CARgs,确定大小任务组中的所有任务。
5)按照大小任务组的划分,按顺序串行执行小任务组和大任务组,监控所有任务的执行情况,如果执行失败则不再重试,而是将其放入逃逸队列;当所有任务执行完成后,将大小任务组中执行失败的任务放入逃逸队列中再重新执行。
除了上述串行执行外,大小任务组还可以并行执行。串行执行过程中,小任务组和大任务组执行时独占为队列分配的所有资源,并行执行时,小任务组和大任务组所占资源的总和等于为队列分配的所有资源。
为给定任务组确定最佳资源供给参数,在给定任务组和资源量的前提下,在最短时间内执行完组内的所有任务。下文结合图8介绍本申请实施例的确定资源参数的方法。其中“资源参数”又称“最佳资源供给参数”。
为给定的组和资源确定最佳资源供给参数的方法具体如下:
1)聚类操作。将历史日志中的组特征simplei作为样本,使用k-center聚类算法对其进行聚类,得到类别集合{c},记录各个类别ci中的聚类中心的特征为featurei,第i个类别中的样本j记录为该样本对应的组特征为为该组配置的资源供给参数定义为rei:
2)深度学习操作。针对所有类别中的样本分别使用深度学习算法,建立反映给定组特征和资源供给参数下spark系统性能的模型,即针对第i个类别,训练样本的输入为输出为该样本在spark系统的执行时长,得到的预测模型为:
model=f(fe,re)
其中,fe为组的特征,其维度为组特征的个数,re为需要配置的最佳资源供给参数,其维度为资源供给参数的个数。
3)强化学习操作。针对每个类型的中心特征featurei,使用Q-learning算法实现spark系统在不同资源供给参数下的探索。具体如下:
(a)定义Q-learning算法的状态集为中心特征featurei中包括的元素,包括组特征和为其配置的资源供给参数两部分,状态集中的每个状态定义如下:
statei={fei,repapi}
其中,fei={fe1,fe2,…,fem},共m个特征;rei={repap1,repap2,…,repapn},共n个可选资源供给参数。
(b)定义Q-learning算法的动作集。状态集中不同的状态之间组特征部分相同,都是fei,而rei为所有资源供给参数可选值的组合,定义动作集为所有资源供给参数可选的值。
由于一些资源供给参数的可选组合不可能出现,则根据专家经验,对可选动作组合rei做一定限制,缩小Q-learning算法的状态空间和最终收敛的决策模型;
(c)对于任意statei,由于其fei都一样,调整其对应的可选资源供给参数rei,使用预测模型得到spark系统的性能参数,即组中所有任务在给定资源供给参数rei下的执行的时间:
ti=f(statesi)=f(fei,repapi)
(d)定义给定statei在的奖励函数为使用预测模型得到的改状态下的批任务执行时长的倒数:
综合所有statei对应的奖励函数,得到奖励函数矩阵,如下:
该矩阵为M*N维,M为状态集中所有状态的总数,N为动作集中所有动作的总数。
(e)使用Q-learning算法训练得到决策模型。建立M*N维的Q-table,并初始化Q-table中全部元素为0,具体如下:
设定迭代次数为1000,使用Q-learning算法针对每一个聚类中心根据上述建立的状态集、动作集、奖励函数,展开Q-learning训练过程,具体如下:
i)随机选择一个状态statei,开始一个episode训练过程,执行玩一次episode训练过程,则完成一轮迭代;
ii)按照∈-greedy算法确定该状态的下一个动作,即根据奖励函数矩阵R,以概率∈选择奖励函数值最大的动作,以概率1-∈随机选择下一步动作action;
iii)根据statei和下一步动作确定下一个状态,在下一个状态下选择所有动作对应的奖励函数值最大的值,按照下式更新Q-table中statei在动作action下Q值:
其中,st表示第t次迭代时的状态,at表示该状态对应的动作,Q(st,at)表示在第t次迭代时,在状态st下选择动作at时的Q值;
α为0到1之间的常数,表示学习率。学习率越大,收敛越快,但是会发生抖动;学习率越小,收敛越慢,但是学习过程越平稳;
R表示在第t次迭代时,在状态st下选择动作at时,根据奖励函数矩阵R得到的奖励函数值;
at+1为使用∈-greedy算法确定的下一个动作,st+1表示对状态st执行动作at+1后,得到的下一步动作。
iv)记录训练过程中statei经历的历史状态,如果训练过程中得到的下一个状态已经在历史状态中出现过,则跳出本次episode,迭代次数+1,并从i)重新开始下一次episode的训练过程;
v)如果迭代次数大于设置的1000,则跳出Q-learning的训练过程,此时的Q-table则为深度学习得到的决策模型。
4)分类操作。当有新的组特征需要确定最佳资源供给参数时,根据该组的历史运行日志统计其队列特征featurex,以聚类算法中得到的类别为分类结果{c},确定新组归属的类别ci,确定该类别选择该类别的中心特征featurei;
5)查找决策模型确定最佳资源供给参数。根据分类操作得到的featurei,查找Q-table,得到新的组特征featurex对应的最佳资源供给参数,具体如下:
i)featurei为使用决策模型时的初始状态statet,根据该状态在状态集中选择对应的索引号i;
ii)对应该索引号i,查找Q-table的第i行,根据Q-table在该行上的最大值,确定选择哪一个动作action,根据action确定下一个状态statet+1,并将该状态记录在历史状态中,并更新t=t+1;
iii)重复上述过程,得到下一步状态statet+1,如果下一步状态在历史状态中出现过,则跳出查找流程,此时的状态为:
statesfinal=(fei,repapfinal)
repapfinal就是需要为新组配置的最佳资源供给参数。
其中,通过查找Q表得到最佳参数的过程示可以参见图9所示,图9示出了Q-table的一种可能的实现方式,经过上述步骤配置的最佳资源供给参数可以通过图9所示的“直线”指示。在任意一个状态St下查找Q表,得到对应Q值最大的动作ri,使用ri替换St中对应的动作,生成新的状态St+1,迭代进行,并在迭代过程中记录经历过的状态,直到下一个状态St+1包括在已经记录的状态中。此时,状态St+1中包括的ri即为对应的最佳资源供给参数。
三、批级调度,用于在确定落入任意组中的任务,以及该组对应的资源供给参数后,根据确定的sc_num做批级调度,拉齐落入每个sc中任务的执行时长,避免组内部的长尾效应。
结合图10介绍根据组中所有任务的CAR,建立优化模型和优化目标,使用PSO算法求解优化问题,确定各个sc内部落入的任务,保证落入每个sc中任务的CAR之和基本一致。具体如下:
1)建立模型。定义一个(sc_num*N)*1的向量,N表示组中任务的个数,sc_num为查询Q-table时确定的最佳资源参数中的sc个数:
v={v0,v1,…,vN,vN+1vN+2,…v2N,…,vi·N+1,vi·N+2,…,v(i+1)·N,…,vsc_num*N}
2)建立二值约束。向量中各元素的取值为0或1,取0表示组中对应的业务未落入对应的sc中,1表示组中对应的任务落入对应的sc中;
3)建立优化目标。以落入各sc中的任务的CAR之和的标准方差最小为优化目标;
将向量v按照每个子向量中包括的元素个数为N,从第一个元素开始进行划分,最终划分为sc_num个子向量。如下:
落入每个sc中任务的CAR之和为:
优化目标定义为:
4)确定落入各sc中的任务。使用PSO算法求解上述模型的最优解,得到落入各个sc中的任务。PSO算法中每个粒子即为上述定义的优化向量,粒子的个数定义为30,最大迭代次数设置为200,随机初始化粒子初始位置和速度,并根据下式迭代进化。
迭代过程中使用优化目标中的适应度函数值更新粒子位置,迭代结束时,对应不同优化目标,所有粒子的适应度函数值最大或最小时对应的优化向量即为所得最优解。
由于该优化问题有二值约束,粒子在每次进化后都要进行二值化,即将所有粒子转变为0或1。二值化方法如下:对于每一个粒子xi,考虑所有粒子的状态,按照如下概率将xi转变为1:
其中,i表示第i个粒子,t表示迭代的次数;ω为惯性变量,定义为0到1之间的常数;c1、r1、c2、r2为常数,控制粒子群优化算法的优化速度和精度,速度越快,精度越差,反之,速度越慢,精度越高;为第i个粒子在当前的t次迭代过程中,根据适应度函数确定的最佳历史位置;为所有粒子在当前的t次迭代过程中,根据适应度函数确定的最佳历史位置;Sigmoid为转换函数,可以将任务实数转化到0到1之间,其定义如下:
上文结合图1至图10介绍了本申请实施例的资源分配的方法,下文结合图11至图13介绍本申请实施例的资源分配的装置。需要说明的是,图11至图13可以执行图2至图10所示的方法,为了简洁,在此不再赘述。
图11是本申请实施例的一种分布式计算系统中资源调度的装置的示意图,图11所示的装置包括:获取单元1110以及处理单元1120。
获取单元1110,用于获取所述分布式计算系统中待处理的批任务中每个spark任务的累积分配资源;
处理单元1120,用于根据所述批任务中每个spark任务的累积分配资源,为所述批任务中每个spark任务分配执行器。
可选地,作为一个实施例,所述分布式计算系统包括第一任务集合和第二任务集合,所述第一任务集合中的任务通过第一执行器集合中的执行器执行,所述第二任务集合中的任务通过第二执行器集合中的执行器执行,所述第一执行器集合中的执行器的规格与所述第二执行器集合中执行器的规格不同,
所述处理单元,用于:根据所述批任务中每个spark任务的累积分配资源,将所述批任务中每个spark任务划分至所述第一任务集合或所述第二任务集合,使得所述第一任务集合中每个spark任务的累积分配资源高于所述第二任务集合中每个spark任务的累积分配资源;从所述第一执行器集合中为所述第一任务集合中的spark任务分配执行器;从所述第二执行器集合中为所述第一任务集合中的spark任务分配执行器。
可选地,作为一个实施例,所述处理单元,用于:获取目标任务集合中spark任务的任务特征,所述目标任务集合为所述第一任务集合或所述第二任务集合;根据所述目标任务集合中spark任务的任务特征,以及预配置的多个候选资源配置参数,通过Q-learning模型确定所述目标任务集合的资源配置参数。
可选地,作为一个实施例,所述处理单元,用于:若所述批任务中的第一spark任务执行失败,将所述第一spark任务存储到逃逸队列中。
图12是本申请实施例的一种分布式计算系统中资源调度的装置的示意图。图12所示的装置1200包括:获取单元1210以及处理单元1220。
获取单元1210,用于获取所述分布式计算系统中待执行的第一spark任务的计算资源消耗趋势,所述计算资源消耗趋势用于指示所述第一spark任务在执行过程中消耗的所述分布式计算系统的计算资源的使用量随时间的变化;
处理单元1220,用于在所述第一spark任务的执行过程中,根据所述第一spark任务的所述计算资源消耗趋势,调整为所述第一spark任务分配的分布式系统的计算资源。
可选地,作为一个实施例,所述计算资源消耗趋势包括所述目标spark任务在执行过程中消耗的所述分布式计算系统的计算资源的使用量的波峰和波谷,其中,在所述波峰出现的第一时间段内为所述spark任务分配的所述分布式系统的第一计算资源大于在所述波谷出现的第二时间段内为所述spark任务分配的所述分布式系统的第二计算资源。
可选地,作为一个实施例,所述根据所述第一spark任务的所述计算资源消耗趋势,调整为所述第一spark任务分配的分布式系统的计算资源,包括:
根据所述第一spark任务的所述计算资源消耗趋势,确定所述第一spark任务的第一计算资源调整时刻,所述第一计算资源调整时刻位于所述第一时间段与所述第二时间段之间;当所述spark任务的执行时间为所述第一计算资源调整时刻时,根据所述第一计算资源以及所述第二计算资源,调整为所述第一spark任务分配的所述分布式系统的计算资源。
可选地,作为一个实施例,所述第一spark任务存储在第一等待队列中,所述第一等待队列为所述分布式计算系统包括多个等待队列中的一个等待队列,所述多个等待队列中不同的等待队列中存储的spark任务的计算资源调整时间不同,同一个等待队列中存储的多个spark任务的计算资源调整时间相同。
在可选的实施例中,上述装置1100还可以是服务器1300,具体地,获取单元1110可以为至少一个输入/输出接口1330,所述处理单元1120可以为至少一个处理器1320。所述服务器1300还可以包括至少一个存储器1310,具体如图13所示。
在可选的实施例中,上述装置1200还可以是服务器1300,获取单元1210可以为至少一个输入/输出接口1330,处理单元1220可以为至少一个处理器1320。所述服务器1300还可以包括至少一个存储器1310,具体如图13所示。
图13是本申请实施例的服务器的示意图。图13所示的控制器1300可以包括:至少一个存储器1310、至少一个处理器1320和至少一个输入/输出接口1330。其中,至少一个存储器1310、至少一个处理器1320、和至少一个输入/输出接口1330通过通信连接相连,该至少一个存储器1310用于存储程序指令,该至少一个处理器1320用于执行该存储器1320存储的程序指令,以控制至少一个输入/输出接口1330接收输入的数据和信息,输出操作结果等数据。
该存储器1310可以包括只读存储器和随机存取存储器,并向处理器1320提供指令和数据。处理器1320的一部分还可以包括非易失性随机存取存储器。例如,处理器1320还可以存储设备类型的信息。
在实现过程中,上述方法的各步骤可以通过处理器1320中的硬件的集成逻辑电路或者软件形式的指令完成。结合本申请实施例所公开的方法可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1310,处理器1320读取存储器1310中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
应理解,本申请实施例中,该处理器可以为中央处理单元(central processingunit,CPU),该处理器还可以是其它通用处理器、数字信号处理器(digital signalprocessor,DSP)、专用集成电路(application specific integrated circuit,ASIC)、现成可编程门阵列(field programmable gate array,FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (20)
1.一种分布式计算系统中资源调度的方法,其特征在于,包括:
获取所述分布式计算系统中待处理的批任务中每个spark任务的累积分配资源;
根据所述批任务中每个spark任务的累积分配资源,为所述批任务中每个spark任务分配执行器。
2.如权利要求1所述的方法,其特征在于,所述分布式计算系统包括第一任务集合和第二任务集合,所述第一任务集合中的任务通过第一执行器集合中的执行器执行,所述第二任务集合中的任务通过第二执行器集合中的执行器执行,所述第一执行器集合中的执行器的规格与所述第二执行器集合中执行器的规格不同,
所述根据所述批任务中每个spark任务的累积分配资源,为所述批任务中每个spark任务分配执行器,包括:
根据所述批任务中每个spark任务的累积分配资源,将所述批任务中每个spark任务划分至所述第一任务集合或所述第二任务集合,使得所述第一任务集合中每个spark任务的累积分配资源高于所述第二任务集合中每个spark任务的累积分配资源;
从所述第一执行器集合中为所述第一任务集合中的spark任务分配执行器;
从所述第二执行器集合中为所述第一任务集合中的spark任务分配执行器。
3.如权利要求2所述的方法,其特征在于,所述方法还包括:
获取目标任务集合中spark任务的任务特征,所述目标任务集合为所述第一任务集合或所述第二任务集合;
根据所述目标任务集合中spark任务的任务特征,以及预配置的多个候选资源配置参数,通过Q-learning模型确定所述目标任务集合的资源配置参数。
4.如权利要求1-3中任一项所述的方法,其特征在于,所述方法还包括:
若所述批任务中的第一spark任务执行失败,将所述第一spark任务存储到逃逸队列中。
5.一种分布式计算系统中资源调度的方法,其特征在于,包括:
获取所述分布式计算系统中待执行的第一spark任务的计算资源消耗趋势,所述计算资源消耗趋势用于指示所述第一spark任务在执行过程中消耗的所述分布式计算系统的计算资源的使用量随时间的变化;
在所述第一spark任务的执行过程中,根据所述第一spark任务的所述计算资源消耗趋势,调整为所述第一spark任务分配的分布式系统的计算资源。
6.如权利要求5所述的方法,其特征在于,所述计算资源消耗趋势包括所述目标spark任务在执行过程中消耗的所述分布式计算系统的计算资源的使用量的波峰和波谷,其中,在所述波峰出现的第一时间段内为所述spark任务分配的所述分布式系统的第一计算资源大于在所述波谷出现的第二时间段内为所述spark任务分配的所述分布式系统的第二计算资源。
7.如权利要求6所述的方法,其特征在于,所述根据所述第一spark任务的所述计算资源消耗趋势,调整为所述第一spark任务分配的分布式系统的计算资源,包括:
根据所述第一spark任务的所述计算资源消耗趋势,确定所述第一spark任务的第一计算资源调整时刻,所述第一计算资源调整时刻位于所述第一时间段与所述第二时间段之间;
当所述spark任务的执行时间为所述第一计算资源调整时刻时,根据所述第一计算资源以及所述第二计算资源,调整为所述第一spark任务分配的所述分布式系统的计算资源。
8.如权利要求7所述的方法,其特征在于,所述第一spark任务存储在第一等待队列中,所述第一等待队列为所述分布式计算系统包括多个等待队列中的一个等待队列,所述多个等待队列中不同的等待队列中存储的spark任务的计算资源调整时间不同,同一个等待队列中存储的多个spark任务的计算资源调整时间相同。
9.一种分布式计算系统中资源调度的装置,其特征在于,包括:
获取单元,用于获取所述分布式计算系统中待处理的批任务中每个spark任务的累积分配资源;
处理单元,用于根据所述批任务中每个spark任务的累积分配资源,为所述批任务中每个spark任务分配执行器。
10.如权利要求9所述的装置,其特征在于,所述分布式计算系统包括第一任务集合和第二任务集合,所述第一任务集合中的任务通过第一执行器集合中的执行器执行,所述第二任务集合中的任务通过第二执行器集合中的执行器执行,所述第一执行器集合中的执行器的规格与所述第二执行器集合中执行器的规格不同,
所述处理单元,用于:
根据所述批任务中每个spark任务的累积分配资源,将所述批任务中每个spark任务划分至所述第一任务集合或所述第二任务集合,使得所述第一任务集合中每个spark任务的累积分配资源高于所述第二任务集合中每个spark任务的累积分配资源;
从所述第一执行器集合中为所述第一任务集合中的spark任务分配执行器;
从所述第二执行器集合中为所述第一任务集合中的spark任务分配执行器。
11.如权利要求10所述的装置,其特征在于,所述处理单元,用于:
获取目标任务集合中spark任务的任务特征,所述目标任务集合为所述第一任务集合或所述第二任务集合;
根据所述目标任务集合中spark任务的任务特征,以及预配置的多个候选资源配置参数,通过Q-learning模型确定所述目标任务集合的资源配置参数。
12.如权利要求9-11中任一项所述的装置,其特征在于,所述处理单元,用于:
若所述批任务中的第一spark任务执行失败,将所述第一spark任务存储到逃逸队列中。
13.一种分布式计算系统中资源调度的装置,其特征在于,包括:
获取单元,用于获取所述分布式计算系统中待执行的第一spark任务的计算资源消耗趋势,所述计算资源消耗趋势用于指示所述第一spark任务在执行过程中消耗的所述分布式计算系统的计算资源的使用量随时间的变化;
处理单元,用于在所述第一spark任务的执行过程中,根据所述第一spark任务的所述计算资源消耗趋势,调整为所述第一spark任务分配的分布式系统的计算资源。
14.如权利要求13所述的装置,其特征在于,所述计算资源消耗趋势包括所述目标spark任务在执行过程中消耗的所述分布式计算系统的计算资源的使用量的波峰和波谷,其中,在所述波峰出现的第一时间段内为所述spark任务分配的所述分布式系统的第一计算资源大于在所述波谷出现的第二时间段内为所述spark任务分配的所述分布式系统的第二计算资源。
15.如权利要求14所述的装置,其特征在于,所述根据所述第一spark任务的所述计算资源消耗趋势,调整为所述第一spark任务分配的分布式系统的计算资源,包括:
根据所述第一spark任务的所述计算资源消耗趋势,确定所述第一spark任务的第一计算资源调整时刻,所述第一计算资源调整时刻位于所述第一时间段与所述第二时间段之间;
当所述spark任务的执行时间为所述第一计算资源调整时刻时,根据所述第一计算资源以及所述第二计算资源,调整为所述第一spark任务分配的所述分布式系统的计算资源。
16.如权利要求15所述的装置,其特征在于,所述第一spark任务存储在第一等待队列中,所述第一等待队列为所述分布式计算系统包括多个等待队列中的一个等待队列,所述多个等待队列中不同的等待队列中存储的spark任务的计算资源调整时间不同,同一个等待队列中存储的多个spark任务的计算资源调整时间相同。
17.一种计算机可读介质,其特征在于,包括计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行如权利要求1至4中任一项所述的方法。
18.一种计算机可读介质,其特征在于,包括计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行如权利要求5至8中任一项所述的方法。
19.一种计算机系统,其特征在于,包括处理器和存储器,所述存储器中存储有计算机程序,所述处理器用于执行所述计算机程序以实现如权利要求1至4中任一项所述的方法。
20.一种计算机系统,其特征在于,包括处理器和存储器,所述存储器中存储有计算机程序,所述处理器用于执行所述计算机程序以实现如权利要求5至8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910581172.5A CN112148471B (zh) | 2019-06-29 | 2019-06-29 | 分布式计算系统中资源调度的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910581172.5A CN112148471B (zh) | 2019-06-29 | 2019-06-29 | 分布式计算系统中资源调度的方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112148471A true CN112148471A (zh) | 2020-12-29 |
CN112148471B CN112148471B (zh) | 2023-07-07 |
Family
ID=73891277
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910581172.5A Active CN112148471B (zh) | 2019-06-29 | 2019-06-29 | 分布式计算系统中资源调度的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112148471B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113312166A (zh) * | 2021-07-29 | 2021-08-27 | 阿里云计算有限公司 | 资源处理方法以及装置 |
CN113778646A (zh) * | 2021-08-22 | 2021-12-10 | 物产中大公用环境投资有限公司 | 一种基于执行时间预测的任务层级调度方法及装置 |
CN114756385A (zh) * | 2022-06-16 | 2022-07-15 | 合肥中科类脑智能技术有限公司 | 一种深度学习场景下的弹性分布式训练方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104407921A (zh) * | 2014-12-25 | 2015-03-11 | 浪潮电子信息产业股份有限公司 | 一种基于时间的yarn任务资源动态调度方法 |
WO2017133351A1 (zh) * | 2016-02-05 | 2017-08-10 | 华为技术有限公司 | 一种资源分配方法及资源管理器 |
CN107066332A (zh) * | 2017-01-25 | 2017-08-18 | 广东神马搜索科技有限公司 | 分布式系统及其调度方法和调度装置 |
CN107562546A (zh) * | 2017-09-18 | 2018-01-09 | 上海量明科技发展有限公司 | 任务分配方法、装置及即时通信工具 |
-
2019
- 2019-06-29 CN CN201910581172.5A patent/CN112148471B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104407921A (zh) * | 2014-12-25 | 2015-03-11 | 浪潮电子信息产业股份有限公司 | 一种基于时间的yarn任务资源动态调度方法 |
WO2017133351A1 (zh) * | 2016-02-05 | 2017-08-10 | 华为技术有限公司 | 一种资源分配方法及资源管理器 |
CN107066332A (zh) * | 2017-01-25 | 2017-08-18 | 广东神马搜索科技有限公司 | 分布式系统及其调度方法和调度装置 |
CN107562546A (zh) * | 2017-09-18 | 2018-01-09 | 上海量明科技发展有限公司 | 任务分配方法、装置及即时通信工具 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113312166A (zh) * | 2021-07-29 | 2021-08-27 | 阿里云计算有限公司 | 资源处理方法以及装置 |
CN113312166B (zh) * | 2021-07-29 | 2022-02-01 | 阿里云计算有限公司 | 资源处理方法以及装置 |
CN113778646A (zh) * | 2021-08-22 | 2021-12-10 | 物产中大公用环境投资有限公司 | 一种基于执行时间预测的任务层级调度方法及装置 |
CN113778646B (zh) * | 2021-08-22 | 2024-04-05 | 物产中大公用环境投资有限公司 | 一种基于执行时间预测的任务层级调度方法及装置 |
CN114756385A (zh) * | 2022-06-16 | 2022-07-15 | 合肥中科类脑智能技术有限公司 | 一种深度学习场景下的弹性分布式训练方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112148471B (zh) | 2023-07-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Bao et al. | Online job scheduling in distributed machine learning clusters | |
US11868890B2 (en) | Workflow optimization | |
Alkayal et al. | Efficient task scheduling multi-objective particle swarm optimization in cloud computing | |
CN110321222B (zh) | 基于决策树预测的数据并行作业资源分配方法 | |
US20190303200A1 (en) | Dynamic Storage-Aware Job Scheduling | |
US10761897B2 (en) | Predictive model-based intelligent system for automatically scaling and managing provisioned computing resources | |
Choi et al. | Lazy batching: An sla-aware batching system for cloud machine learning inference | |
CN112416585B (zh) | 面向深度学习的gpu资源管理与智能化调度方法 | |
CN109992404A (zh) | 集群计算资源调度方法、装置、设备及介质 | |
CN112148471A (zh) | 分布式计算系统中资源调度的方法和装置 | |
CN110262897B (zh) | 一种基于负载预测的Hadoop计算任务初始分配方法 | |
CN113037800B (zh) | 作业调度方法以及作业调度装置 | |
CN111813523A (zh) | 时长预估模型生成方法、系统资源调度方法、装置、电子设备和存储介质 | |
Liu et al. | CCRP: Customized cooperative resource provisioning for high resource utilization in clouds | |
US20180322226A1 (en) | Scheduling simultaneous optimization of multiple very-large-scale-integration designs | |
CN116185584A (zh) | 一种基于深度强化学习的多租户数据库资源规划与调度方法 | |
US11868808B2 (en) | Automatic driving simulation task scheduling method and apparatus, device, and readable medium | |
CN113485833B (zh) | 资源预测方法和装置 | |
CN115098257A (zh) | 一种资源调度方法、装置、设备以及存储介质 | |
Naskos et al. | Cost-aware horizontal scaling of NoSQL databases using probabilistic model checking | |
CN113127173A (zh) | 一种异构感知的集群调度方法及装置 | |
CN111625352A (zh) | 调度方法、装置及存储介质 | |
CN112035234A (zh) | 分布式批量作业分配方法及装置 | |
Fan et al. | Associated task scheduling based on dynamic finish time prediction for cloud computing | |
CN115904708A (zh) | 一种ai平台动态加权调度方法、装置及存储介质 |
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 |