CN113553189A - Yarn集群资源调度方法、装置、介质和计算机设备 - Google Patents
Yarn集群资源调度方法、装置、介质和计算机设备 Download PDFInfo
- Publication number
- CN113553189A CN113553189A CN202110938082.4A CN202110938082A CN113553189A CN 113553189 A CN113553189 A CN 113553189A CN 202110938082 A CN202110938082 A CN 202110938082A CN 113553189 A CN113553189 A CN 113553189A
- Authority
- CN
- China
- Prior art keywords
- resource
- request
- node
- rigid
- job
- 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.)
- Pending
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/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/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及一种YARN集群资源调度方法、装置、介质和计算机设备,其中方法包括:接收应用管理器发送的作业任务的作业资源请求;确定作业资源请求是刚性资源请求时,将刚性资源请求添加至请求队列中,请求队列中包括多个请求单元,不同作业任务所属的多个刚性资源请求被添加至对应的不同请求单元中;启动多个第一线程,每个第一线程从请求队列中获取对应的每个所述请求单元中的多个刚性资源请求以进行资源预分配处理;每个所述第一线程在资源预分配之后,判断每个预分配结果是否满足对应的作业任务的资源需求量;若是,则每个所述第一线程分别提交预分配结果至应用管理器。本公开的实施方案可以提高集群的资源调度性能。
Description
技术领域
本公开实施例涉及计算机集群资源管理技术领域,尤其涉及一种YARN集群资源调度方法,YARN集群资源调度装置,以及实现YARN集群资源调度方法的计算机可读存储介质和计算机设备。
背景技术
YARN是一种新的Hadoop资源管理***,它将资源管理从计算框架中分离出来,变成一个通用资源管理***,可为上层应用提供统一的资源管理和调度。
YARN***通常可由资源管理器RM(Resource Manager),节点管理器NM(NodeManager),应用管理器AM(Application Master)以及资源容器(Container)等组成。在资源调度时,存在一些刚性资源请求,例如科学计算或者是机器学习的训练任务的资源请求,这些作业任务在资源请求时如果申请了例如1000核(core)CPU资源,那么最终必须在规定的时间内把1000核CPU资源全部分配给用户,否则任务就会失败,如分配到500核CPU资源,没有达到作业任务所需的总资源,则作业任务无法启动。
相关技术中设计了刚性调度器(Gang Scheduler)来进行刚性资源请求的处理。但是目前的刚性调度器的实现方式是同步方式,所有应用程序的AM与RM是通过心跳定时通信,RM通过锁(lock)的方式保证每个应用程序的多次心跳是串行的,Gang Scheduler会在每次心跳中同步进行一次资源调度,同步返回调度结果如成功或者失败,此方式资源调度与心跳耦合,造成的问题是无法灵活地对多个应用程序的资源请求进行自定义排队策略,影响调度性能。另外,由于采用同步方式,不支持并发,所以在资源请求量增大时,性能会出现一些瓶颈。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本公开实施例提供了一种YARN集群资源调度方法,YARN集群资源调度装置,以及实现YARN集群资源调度方法的计算机可读存储介质和计算机设备。
第一方面,本公开实施例提供了一种YARN集群资源调度方法,应用于资源管理器,该方法包括:
接收应用管理器发送的作业任务的作业资源请求;
确定所述作业资源请求是刚性资源请求时,将所述刚性资源请求添加至请求队列中;其中,所述请求队列中包括多个请求单元,不同作业任务所属的多个刚性资源请求被添加至对应的不同请求单元中;
启动多个第一线程,每个所述第一线程从所述请求队列中获取对应的每个所述请求单元中的多个刚性资源请求以进行资源预分配处理;
每个所述第一线程在资源预分配之后,判断每个预分配结果是否满足对应的作业任务的资源需求量;
若是,则每个所述第一线程分别提交所述预分配结果至所述应用管理器。
在本公开的一些实施例中,所述每个所述第一线程从所述请求队列中获取对应的每个所述请求单元中的多个刚性资源请求以进行资源预分配处理,包括:
获取集群所有节点构成节点列表;
从所述节点列表中筛选过滤掉符合预设过滤条件的节点,得到待分配节点列表;
基于至少一个约束条件对所述待分配节点列表中的每个节点计算节点分值;
基于所述节点分值从所述待分配节点列表中确定目标候选节点;
在所述目标候选节点上为对应的所述请求单元中的所述多个刚性资源请求进行资源预分配。
在本公开的一些实施例中,所述预设过滤条件至少包括节点负载大于预设负载;和/或,所述至少一个约束条件包括节点属性的弱约束条件。
在本公开的一些实施例中,所述方法还包括:
每个所述第一线程在资源预分配之后,判断预分配结果不满足对应的作业任务的资源需求量时,取消预分配结果以释放所述预分配结果中的资源。
在本公开的一些实施例中,所述方法还包括:
在预分配结果不满足对应的作业任务的资源需求量时,判断所述作业任务所属的刚性资源请求是否携带指定重试信息;
若是,则将所述作业任务所属的刚性资源请求重新添加至所述请求队列中。
第二方面,本公开实施例提供一种YARN集群资源调度方法,应用于资源管理器,该方法包括:
接收应用管理器发送的作业任务的作业资源请求;
确定所述作业资源请求是刚性资源请求时,将所述刚性资源请求添加至请求队列中;其中,所述请求队列中包括多个请求单元,不同作业任务所属的多个刚性资源请求被添加至对应的不同请求单元中;
启动多个第二线程,每个所述第二线程从所述请求队列中获取对应的每个所述请求单元中的多个刚性资源请求以进行资源分配处理。
在本公开的一些实施例中,所述每个所述第二线程从所述请求队列中获取对应的每个所述请求单元中的多个刚性资源请求以进行资源分配处理,包括:
获取集群所有节点构成节点列表;
从所述节点列表中筛选过滤掉符合预设过滤条件的节点,得到待分配节点列表;
基于至少一个约束条件对所述待分配节点列表中的每个节点计算节点分值;
基于每个节点的节点分值为对应的请求单元中的多个刚性资源请求进行资源分配。
在本公开的一些实施例中,所述基于每个节点的节点分值为对应的请求单元中的多个刚性资源请求进行资源分配,包括:
基于每个节点的节点分值进行节点排序,获取排序后的每个节点的可分配资源;
基于排序后的每个节点的可分配资源依次进行资源分配。
在本公开的一些实施例中,所述方法还包括:
对所述待分配节点列表中的每个节点计算节点分值之前,获取每个节点的可分配资源的快照信息;
基于所述快照信息为每个节点计算节点分值。
在本公开的一些实施例中,所述方法还包括:
每个所述第二线程在资源分配之后,判断分配结果不满足对应的作业任务的资源需求量时,将所述作业任务所属的刚性资源请求重新添加至所述请求队列中。
第三方面,本公开实施例提供一种YARN集群资源调度装置,应用于资源管理器,该装置包括:
请求接收模块,用于接收应用管理器发送的作业任务的作业资源请求;
队列添加模块,用于确定所述作业资源请求是刚性资源请求时,将所述刚性资源请求添加至请求队列中;其中,所述请求队列中包括多个请求单元,不同作业任务所属的多个刚性资源请求被添加至对应的不同请求单元中;
预分配模块,用于启动多个第一线程,每个所述第一线程从所述请求队列中获取对应的每个所述请求单元中的多个刚性资源请求以进行资源预分配处理;
分配结果判断模块,用于使每个所述第一线程在资源预分配之后,判断每个预分配结果是否满足对应的作业任务的资源需求量;
分配结果提交模块,用于在所述分配结果判断模块的判断结果为是时,使每个所述第一线程分别提交所述预分配结果至所述应用管理器。
第四方面,本公开实施例提供一种YARN集群资源调度装置,应用于资源管理器,该装置包括:
请求接收模块,用于接收应用管理器发送的作业任务的作业资源请求;
队列添加模块,用于确定所述作业资源请求是刚性资源请求时,将所述刚性资源请求添加至请求队列中;其中,所述请求队列中包括多个请求单元,不同作业任务所属的多个刚性资源请求被添加至对应的不同请求单元中;
分配模块,用于启动多个第二线程,每个所述第二线程从所述请求队列中获取对应的每个所述请求单元中的多个刚性资源请求以进行资源分配处理。
第五方面,本公开实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述任一实施例所述YARN集群资源调度方法的步骤。
第六方面,本公开实施例提供一种电子设备,包括:
处理器;以及
存储器,用于存储计算机程序;
其中,所述处理器配置为经由执行所述计算机程序来执行上述任一实施例所述YARN集群资源调度方法的步骤。
本公开实施例提供的技术方案与现有技术相比具有如下优点:
本公开实施例提供的YARN集群资源调度方法、装置、介质和计算机设备中,资源管理器RM接收应用管理器AM发送的作业任务的作业资源请求,确定所述作业资源请求是刚性资源请求时,将所述刚性资源请求添加至请求队列中,所述请求队列中包括多个请求单元,不同作业任务所属的多个刚性资源请求被添加至对应的不同请求单元中;启动多个第一线程,每个所述第一线程从所述请求队列中获取对应的每个所述请求单元中的多个刚性资源请求以进行资源预分配处理;每个所述第一线程在资源预分配之后,判断每个预分配结果是否满足对应的作业任务的资源需求量;若是,则每个所述第一线程分别提交预分配结果至所述AM。这样,本实施例的方案可以通过将作业资源请求添加至请求队列,之后再从请求队列中取作业资源请求进行资源调度,如此将AM的心跳与资源调度解耦,AM心跳发送作业资源请求之后,RM无需立即返回资源调度分配结果,可以异步从请求队列中取作业资源请求进行资源分配,在一定程度上提高调度性能,同时,多线程可以并发从请求队列中对应的请求单元中取对应作业任务的作业资源请求进行资源预分配并提交分配结果,在资源请求量增大时,缓解调度性能出现的瓶颈问题。另外,在多个作业任务并发作业资源请求的情况下,每个作业任务所属的刚性资源请求涉及的节点资源的分配过程可以统一整体分配或者统一回滚,在一定程度上提高了调度性能。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本公开实施例YARN集群***示意图;
图2为本公开实施例YARN集群资源调度方法流程图;
图3为本公开实施例YARN集群资源调度方法过程示意图;
图4为本公开另一实施例YARN集群资源调度方法流程图;
图5为本公开又一实施例YARN集群资源调度方法流程图;
图6为本公开再一实施例YARN集群资源调度方法流程图;
图7为本公开实施例YARN集群资源调度装置示意图;
图8为本公开另一实施例YARN集群资源调度装置示意图;
图9为本公开实施例实现YARN集群资源调度方法的计算机设备示意图。
具体实施方式
为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。
在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。
应当理解,在下文中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
图1为YARN集群***示意图,图2为本公开实施例提供的一种YARN集群资源调度方法,该方法可以基于图1所示集群***实施,具体可以应用于资源管理器RM。该方法可以包括以下步骤:
步骤S201:接收应用管理器发送的作业任务的作业资源请求。
示例性的,作业资源请求可以携带相应作业任务所需资源类型和数量等信息,资源类型可以是如CPU、内存等不同类型的资源。同一作业任务可能陆续有多个作业资源请求。具体的,AM可以基于心跳将客户端(Client)提交的应用程序的作业任务的作业资源请求发送至RM。
步骤S202:确定所述作业资源请求是刚性资源请求时,将所述刚性资源请求添加至请求队列中;其中,所述请求队列中包括多个请求单元,不同作业任务所属的多个刚性资源请求被添加至对应的不同请求单元中。
示例性的,作业资源请求可以是弹性资源请求,也可以是刚性资源请求,刚性资源请求如请求1000核CPU,则RM必须成功分配足额的1000核CPU资源才返回分配结果到AM,否则直接失败。
本实施例中RM可以调用预先配置的刚性调度器(Gang Scheduler)来进行刚性资源请求的处理。现有的各调度器均可以通过可插拔方式配置于RM中,这些可以参考现有技术理解,此处不再赘述。
RM判断接收的作业资源请求是刚性资源请求时,将所述刚性资源请求添加至请求队列(RequestQueue)中,AM的心跳立即返回,不进行锁(Block)操作。之后由GangScheduler从Request Queue里异步取刚性资源请求处理来分配资源。即本实施例中GangScheduler处于异步场景下,此时,为了适应性的记录属于同一作业任务的多个刚性资源请求的情况,在异步场景中,参考图3中所示,本实施例中封装成请求单元(Request Cell),属于同一作业任务的多个刚性资源请求被添加至请求队列(Request Queue)中的一个请求单元(Request Cell)中,不同的作业任务对应不同的请求单元(Request Cell)。如作业任务1对应Request Cell1,作业任务2对应Request Cell2,依次类推,作业任务N对应RequestCellN等等,每个Request Cell的唯一标识ID可以是对应的作业任务的唯一标识ID,属于一个作业任务的所有作业资源请求中均可携带该作业任务的唯一标识ID,如此可以区分并将不同作业任务所属的多个刚性资源请求添加至各自对应的不同请求单元中。
步骤S203:启动多个第一线程,每个所述第一线程从所述请求队列中获取对应的每个所述请求单元中的多个刚性资源请求以进行资源预分配处理。
示例性的,每个第一线程可以认为是一个事务,每个第一线程可以集中处理请求队列(Request Queue)中对应的一个请求单元(Request Cell)中的多个刚性资源请求,如线程1对应Request Cell1,线程2对应Request Cell2,线程N对应Request CellN。具体的,Gang Scheduler可以启动多个第一线程即开启事务,每个第一线程从请求队列中获取对应的请求单元中的多个刚性资源请求以进行资源预分配处理。这里不进行真实资源分配,只是资源预分配,可以理解为事务未提交。
步骤S204:每个所述第一线程在资源预分配之后,判断每个预分配结果是否满足对应的作业任务的资源需求量。
示例性的,每个第一线程各自在资源预分配之后,判断各自的预分配结果是否满足对应的作业任务的资源需求量,例如线程1处理请求单元Request Cell1中的作业资源请求,得到预分配结果1,然后判断预分配结果1是否满足对应的作业任务1的资源需求量,该资源需求量可以基于属于作业任务1的多个刚性资源请求各自携带的资源需求量求和计算得到。
步骤S205:若是,则每个所述第一线程分别提交所述预分配结果至所述AM。
具体的,每个第一线程判断各自的预分配结果满足对应的作业任务的资源需求量时,则分别提交各自的预分配结果至所述AM,此处可以理解为进行了最终的实际分配,事务提交。
本实施例中,Gang Scheduler的资源分配基于请求单元Request Cell整体做调度,预分配结果至少可以包含一组资源容器(container)列表。
本实施例的YARN集群资源调度方法,可以通过将作业资源请求添加至请求队列,之后再从请求队列中取作业资源请求进行资源调度,如此将AM的心跳与资源调度解耦,AM心跳发送作业资源请求之后,RM无需立即返回资源调度分配结果,可以异步从请求队列中取作业资源请求进行资源分配,在一定程度上提高调度性能,同时,多线程可以并发从请求队列中对应的请求单元中取对应作业任务的作业资源请求进行资源预分配并提交分配结果,在资源请求量增大时,可以缓解调度性能出现的瓶颈问题。另外,在多个作业任务并发作业资源请求的情况下,每个作业任务所属的刚性资源请求涉及的多个节点资源的分配过程可以统一整体分配或者统一回滚,在一定程度上提高了调度性能。
可选的,在本公开的一些实施例中,结合图4中所示,步骤S203中每个所述第一线程从所述请求队列中获取对应的每个所述请求单元中的多个刚性资源请求以进行资源预分配处理,具体可以包括以下步骤:
步骤S401:获取集群所有节点构成节点列表。
具体的,集群中每个节点如服务器可以包含节点管理器NM(NodeManager)。NM可以向RM发送心跳信息汇报自身的如负载信息和/或资源容器信息等。RM可以获取集群所有节点构成节点列表,节点列表可以包括节点标识、节点负载、节点属性等信息,但不限于此。
步骤S402:从所述节点列表中筛选过滤掉符合预设过滤条件的节点,得到待分配节点列表。
示例性的,在本公开的一些实施例中,所述预设过滤条件至少可以包括但不限于节点负载大于预设负载。预设负载可以自定义设置,对此不作限制。本实施例中也即可以过滤掉集群中节点负载较大的节点,基于剩余节点得到待分配节点列表。剩余节点可以理解为负载小,空闲资源较多的节点。
举例来说,节点列表中包括例如N1、N2、N3和N4共四个节点。过滤后得到的待分配节点列表包括例如N1、N2、N3共三个节点。
步骤S403:基于至少一个约束条件对所述待分配节点列表中的每个节点计算节点分值。
示例性的,计算节点分值即对节点打分(Score),也即计算预计分配资源量。所述至少一个约束条件可以包括但不限于节点属性的弱约束条件,即不一定要满足的条件,尽力而为。节点属性例如可以包括但不限于节点的内存属性等。举例来说,例如有第一约束条件和第二约束条件,第一约束条件可以包括但不限于以下至少一项:节点对应负载低于预定负载,节点对应内存大于预定内存。第二约束条件可以包括但不限于以下至少一项:节点分配平均,跳过高负载节点。其中,节点分配平均是指资源分配结束后,各个节点的已使用资源尽可能一致。跳过高负载节点可以是指资源请求尽可能跳过不符合负载阈值的节点。
具体的,每个第一线程可以基于第一约束条件对所述待分配节点列表中的每个节点如N1、N2、N3进行打分得到分值score1,同时可以基于第二约束条件对所述待分配节点列表中的每个节点如N1、N2、N3进行打分得到分值score2,然后对每个节点如N1、N2、N3的分值score1、score2进行加权计算得到最终分值。具体的打分计算方式可以参考现有技术理解,此处不再赘述。
步骤S404:基于所述节点分值从所述待分配节点列表中确定目标候选节点。
具体的,节点分值越大,则优先将对应节点作为目标候选节点。例如基于最终分值确定的目标候选节点为N1、N3。示例性的,如图3所示,为了适应性的与上述请求单元(Request Cell)匹配,目标候选节点可以分配候选单元(Allocation Candidate Cell)的形式存在,即分配候选单元中包括例如确定的目标候选节点N1和N3。
步骤S405:在所述目标候选节点上为对应的所述请求单元中的所述多个刚性资源请求进行资源预分配。
具体的,例如在目标候选节点为N1、N3上为对应的请求单元Request Cell中的多个刚性资源请求进行资源预分配。
步骤S405之后跳转执行步骤S204,判断预分配结果满足对应的作业任务的资源需求量时,可以将分配候选单元(Allocation Candidate Cell)转换为分配单元(AllocationCell),以分配单元Allocation Cell为单位提交预分配结果至AM。
本实施例中通过上述筛选过滤、计算节点分值等方式来确定最终的合适的节点,基于确定的节点的资源预分配,使得资源分配结果的准确性大为提高。
可选的,在本公开的一些实施例中,所述方法还可以包括以下步骤:每个所述第一线程在资源预分配之后,判断预分配结果不满足对应的作业任务的资源需求量时,取消预分配结果以释放所述预分配结果中的资源。这样可以在一个作业任务的刚性资源请求的资源量无法满足时,直接失败,并释放已预分配的资源,便于其他作业任务及时进行资源分配。
可选的,在本公开的一些实施例中,所述方法还可以包括以下步骤:
步骤i):在预分配结果不满足对应的作业任务的资源需求量时,判断所述作业任务所属的刚性资源请求是否携带指定重试信息。
本实施例中,一个作业任务所属的任意一个刚性资源请求可以携带指定重试信息,这样该刚性资源请求在分配一次资源若无法满足时,可以重试再一次进行分配。
步骤ii):若是,则将所述作业任务所属的刚性资源请求重新添加至所述请求队列中。
具体的,确定需要重试再一次进行分配时,可以将刚性资源请求重新添加至所述请求队列中,参考步骤S202中的详述内容,该重新添加的刚性资源请求例如属于作业任务1,则其重新添加至请求队列中的请求单元Request Cell1中,如属于作业任务2,则其重新添加至请求队列中的请求单元Request Cell2中。
本公开实施例还提供一种YARN集群资源调度方法,应用于资源管理器,如图5中所示,该方法包括以下步骤:
步骤S501:接收应用管理器发送的作业任务的作业资源请求;
步骤S502:确定所述作业资源请求是刚性资源请求时,将所述刚性资源请求添加至请求队列中;其中,所述请求队列中包括多个请求单元,不同作业任务所属的多个刚性资源请求被添加至对应的不同请求单元中。
可以理解的是,上述步骤S501~S502可以参考前述实施例中对应的关于步骤S201~S202的详细描述,此处不再赘述。
步骤S503:启动多个第二线程,每个所述第二线程从所述请求队列中获取对应的每个所述请求单元中的多个刚性资源请求以进行资源分配处理。
示例性的,如图3所示,每个第二线程可以认为是一个事务,每个第二线程可以集中处理请求队列(Request Queue)中对应的一个请求单元(Request Cell)中的多个刚性资源请求,如线程1对应Request Cell1,线程2对应Request Cell2,线程N对应RequestCellN。具体的,Gang Scheduler可以启动多个第二线程即开启事务,每个第二线程从请求队列中获取对应的请求单元中的多个刚性资源请求以进行资源分配处理。
本实施例的方案可以通过将作业资源请求添加至请求队列,之后再从请求队列中取作业资源请求进行资源调度,如此将AM的心跳与资源调度解耦,AM心跳发送作业资源请求之后,RM无需立即返回资源调度分配结果,可以异步从请求队列中取作业资源请求进行资源分配,在一定程度上提高调度性能。另外,在多个作业任务并发作业资源请求的情况下,每个作业任务所属的刚性资源请求涉及的节点资源的分配过程可以统一整体分配,在一定程度上提高了调度性能。
可选的,在本公开的一些实施例中,如图6中所示,上述步骤S503中每个所述第二线程从所述请求队列中获取对应的每个所述请求单元中的多个刚性资源请求以进行资源分配处理,具体可以包括以下步骤:
步骤S601:获取集群所有节点构成节点列表。
步骤S602:从所述节点列表中筛选过滤掉符合预设过滤条件的节点,得到待分配节点列表。
步骤S603:基于至少一个约束条件对所述待分配节点列表中的每个节点计算节点分值。
可以理解的是,步骤S601~S603的具体实施可以参考上述步骤S401~S403的详细描述,此处不再赘述。
步骤S604:基于每个节点的节点分值为对应的请求单元中的多个刚性资源请求进行资源分配。
本实施例与上述各实施例的区别在于,为单个节点计算节点分值之后,直接进行资源分配,无需预分配资源,可以在一定程度上提高资源调度的效率。
进一步的,可选的,在本公开的一些实施例中,步骤S604中基于每个节点的节点分值为对应的请求单元中的多个刚性资源请求进行资源分配,具体可以包括:基于每个节点的节点分值进行节点排序,获取排序后的每个节点的可分配资源;基于排序后的每个节点的可分配资源依次进行资源分配。
示例性的,可以基于每个节点的节点分值的大小进行节点排序,优先基于分值大的节点的可分配资源进行资源分配。可选的,在一些实施例中,可以这样依次多轮分配:如给节点N1计算出分值之后分配的时候,节点N1可能未必可以分配到预期的资源,如在此期间其他事务从该节点分配了资源。这种情况下直接取消释放资源是比较可惜的,同时考虑到弱约束的定义本身就是尽力而为,所以优化策略可以是先将该节点已有剩余资源分配,若该节点还有富余资源,则再参与一轮分配。
可选的,在本公开的一些实施例中,所述方法还可以包括以下步骤:对所述待分配节点列表中的每个节点计算节点分值之前,获取每个节点的可分配资源的快照信息;基于所述快照信息为每个节点计算节点分值。
具体的,由于多个线程在并发进行资源分配,存在并发冲突,使得某个线程获取的节点的可分配资源数据出现例如脏读问题。本实施例中获取每个节点的可分配资源的快照信息如可用快照(snapshot available),基于快照信息为每个节点进行打分score,进而实现后续的资源分配。
示例性的,每个第二线程在为例如节点N1计算score时不直接取当前的资源实际最新值,而是最开始时从节点N1获取最新的snapshot available资源,据此进行score,如此可以解决并发冲突导致的例如脏读问题。也可以是在整个第二线程处理期间以该节点的snapshot available做计算,以解决可重复读的问题。
在一些情况下,获取节点的快照进行资源分配,分配期间如果节点数据发生变化,可以提前中止事务即线程重新进行。
可选的,在本公开的一些实施例中,所述方法还可以包括:以下步骤:每个所述第二线程在资源分配之后,判断分配结果不满足对应的作业任务的资源需求量时,将所述作业任务所属的刚性资源请求重新添加至所述请求队列中。
具体的,例如每个第二线程对节点N1打分并计算出可分配资源后,直接分配资源容器,对后续节点同样进行操作。当对筛选后所有节点操作一轮后看是否满足作业任务的资源需求量,如果满足则提交成功,不满足则提交失败,失败时将对应的刚性资源请求重新放回请求队列中,以便继续进行资源分配。这样无需直接释放已分配的资源而是继续分配,在一定程度上提高调度性能。
需要说明的是,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选的,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。另外,也易于理解的是,这些步骤可以是例如在多个模块/进程/线程中同步或异步执行。
图7示出本公开实施例的YARN集群资源调度装置,应用于资源管理器,该装置可以包括:
请求接收模块701,用于接收应用管理器发送的作业任务的作业资源请求;
队列添加模块702,用于确定所述作业资源请求是刚性资源请求时,将所述刚性资源请求添加至请求队列中;其中,所述请求队列中包括多个请求单元,不同作业任务所属的多个刚性资源请求被添加至对应的不同请求单元中;
预分配模块703,用于启动多个第一线程,每个所述第一线程从所述请求队列中获取对应的每个所述请求单元中的多个刚性资源请求以进行资源预分配处理;
分配结果判断模块704,用于使每个所述第一线程在资源预分配之后,判断每个预分配结果是否满足对应的作业任务的资源需求量;
分配结果提交模块705,用于在所述分配结果判断模块的判断结果为是时,使每个所述第一线程分别提交所述预分配结果至所述应用管理器。
本实施例的YARN集群资源调度方法,可以通过将作业资源请求添加至请求队列,之后再从请求队列中取作业资源请求进行资源调度,如此将应用管理器AM的心跳与资源调度解耦,AM心跳发送作业资源请求之后,RM无需立即返回资源调度分配结果,可以异步从请求队列中取作业资源请求进行资源分配,在一定程度上提高调度性能,同时,多线程可以并发从请求队列中对应的请求单元中取对应作业任务的作业资源请求进行资源预分配并提交分配结果,在资源请求量增大时,缓解调度性能出现的瓶颈问题。另外,在多个作业任务并发作业资源请求的情况下,每个作业任务所属的刚性资源请求涉及的多个节点资源的分配过程可以统一整体分配或者统一回滚,在一定程度上提高了调度性能。
在本公开的一些实施例中,所述预分配模块,用于:获取集群所有节点构成节点列表;从所述节点列表中筛选过滤掉符合预设过滤条件的节点,得到待分配节点列表;基于至少一个约束条件对所述待分配节点列表中的每个节点计算节点分值;基于所述节点分值从所述待分配节点列表中确定目标候选节点;在所述目标候选节点上为对应的请求单元中的多个刚性资源请求进行资源预分配。
在本公开的一些实施例中,所述预设过滤条件至少包括节点负载大于预设负载;和/或,所述至少一个约束条件包括节点属性的弱约束条件。
在本公开的一些实施例中,所述装置还包括资源释放模块,用于使每个所述第一线程在资源预分配之后,判断预分配结果不满足对应的作业任务的资源需求量时,取消预分配结果以释放所述预分配结果中的资源。
在本公开的一些实施例中,所述装置还包括请求重试模块,用于在预分配结果不满足对应的作业任务的资源需求量时,判断所述作业任务所属的刚性资源请求是否携带指定重试信息;若是,则将所述作业任务所属的刚性资源请求重新添加至所述请求队列中。
本公开实施例还提供一种YARN集群资源调度装置,应用于资源管理器,如图8所示,该装置包括:
请求接收模块801,用于接收应用管理器发送的作业任务的作业资源请求;
队列添加模块802,用于确定所述作业资源请求是刚性资源请求时,将所述刚性资源请求添加至请求队列中;其中,所述请求队列中包括多个请求单元,不同作业任务所属的多个刚性资源请求被添加至对应的不同请求单元中;
分配模块803,用于启动多个第二线程,每个所述第二线程从所述请求队列中获取对应的每个所述请求单元中的多个刚性资源请求以进行资源分配处理。
在本公开的一些实施例中,所述分配模块803启动的每个所述第二线程从所述请求队列中获取对应的每个所述请求单元中的多个刚性资源请求以进行资源分配处理,具体可包括:获取集群所有节点构成节点列表;从所述节点列表中筛选过滤掉符合预设过滤条件的节点,得到待分配节点列表;基于至少一个约束条件对所述待分配节点列表中的每个节点计算节点分值;基于每个节点的节点分值为对应的请求单元中的多个刚性资源请求进行资源分配。
在本公开的一些实施例中,所述分配模块803基于每个节点的打分结果为对应的请求单元中的多个刚性资源请求进行资源分配,包括:基于每个节点的节点分值进行节点排序,获取排序后的每个节点的可分配资源;基于排序后的每个节点的可分配资源依次进行资源分配。
在本公开的一些实施例中,所述装置还包括快照获取模块,用于对所述待分配节点列表中的每个节点计算节点分值之前,获取每个节点的可分配资源的快照信息。所述分配模块803,还用于基于所述快照信息为每个节点计算节点分值。
在本公开的一些实施例中,所述装置还可以包括请求重试模块,用于在每个所述第二线程在资源分配之后,判断分配结果不满足对应的作业任务的资源需求量时,将所述作业任务所属的刚性资源请求重新添加至所述请求队列中。
关于上述各实施例中的装置,其中各个模块执行操作的具体方式以及带来的相应技术效果已经在前文对应的有关该方法的实施例中进行了对应的详细描述,此处将不做详细阐述说明。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。作为模块或单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现木公开方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本公开实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述任一项实施例所述YARN集群资源调度方法的步骤。
示例性的,该可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。
本公开实施例还提供一种计算机设备,如图9中所示计算机设备可以包括处理器7901以及存储器902,存储器902用于存储计算机程序。其中,所述处理器901配置为经由执行所述计算机程序来执行上述任一项实施例中所述YARN集群资源调度方法的步骤。
所描述的实施例中的各方面、实施方式、实现或特征能够单独使用或以任意组合的方式使用。所描述的实施例中的各方面可由软件、硬件或软硬件的结合实现。所描述的实施例也可以由存储有计算机可读代码的计算机可读介质体现,该计算机可读代码包括可由至少一个计算装置执行的指令。所述计算机可读介质可与任何能够存储数据的数据存储装置相关联,该数据可由计算机***读取。用于举例的计算机可读介质可以包括只读存储器、随机存取存储器、CD-ROM、HDD、DVD、磁带以及光数据存储装置等。所述计算机可读介质还可以分布于通过网络联接的计算机***中,这样计算机可读代码就可以分布式存储并执行。
上述技术描述可参照附图,这些附图形成了本申请的一部分,并且通过描述在附图中示出了依照所描述的实施例的实施方式。虽然这些实施例描述的足够详细以使本领域技术人员能够实现这些实施例,但这些实施例是非限制性的;这样就可以使用其它的实施例,并且在不脱离所描述的实施例的范围的情况下还可以做出变化。比如,流程图中所描述的操作顺序是非限制性的,因此在流程图中阐释并且根据流程图描述的两个或两个以上操作的顺序可以根据若干实施例进行改变。作为另一个例子,在若干实施例中,在流程图中阐释并且根据流程图描述的一个或一个以上操作是可选的,或是可删除的。另外,某些步骤或功能可以添加到所公开的实施例中,或两个以上的步骤顺序被置换。所有这些变化被认为包含在所公开的实施例以及权利要求中。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (14)
1.一种YARN集群资源调度方法,其特征在于,应用于资源管理器,该方法包括:
接收应用管理器发送的作业任务的作业资源请求;
确定所述作业资源请求是刚性资源请求时,将所述刚性资源请求添加至请求队列中;其中,所述请求队列中包括多个请求单元,不同作业任务所属的多个刚性资源请求被添加至对应的不同请求单元中;
启动多个第一线程,每个所述第一线程从所述请求队列中获取对应的每个所述请求单元中的多个刚性资源请求以进行资源预分配处理;
每个所述第一线程在资源预分配之后,判断每个预分配结果是否满足对应的作业任务的资源需求量;
若是,则每个所述第一线程分别提交所述预分配结果至所述应用管理器。
2.根据权利要求1所述的资源调度方法,其特征在于,所述每个所述第一线程从所述请求队列中获取对应的每个所述请求单元中的多个刚性资源请求以进行资源预分配处理,包括:
获取集群所有节点构成节点列表;
从所述节点列表中过滤符合预设过滤条件的节点,得到待分配节点列表;
基于至少一个约束条件对所述待分配节点列表中的每个节点计算节点分值;
基于所述节点分值从所述待分配节点列表中确定目标候选节点;
在所述目标候选节点上为对应的所述请求单元中的所述多个刚性资源请求进行资源预分配。
3.根据权利要求2所述的资源调度方法,其特征在于,所述预设过滤条件至少包括节点负载大于预设负载;和/或,所述至少一个约束条件包括节点属性的弱约束条件。
4.根据权利要求1或2所述的资源调度方法,其特征在于,所述方法还包括:
每个所述第一线程在资源预分配之后,判断预分配结果不满足对应的作业任务的资源需求量时,取消预分配结果以释放所述预分配结果中的资源。
5.根据权利要求4所述的资源调度方法,其特征在于,所述方法还包括:
在预分配结果不满足对应的作业任务的资源需求量时,判断所述作业任务所属的刚性资源请求是否携带指定重试信息;
若是,则将所述作业任务所属的刚性资源请求重新添加至所述请求队列中。
6.一种YARN集群资源调度方法,其特征在于,应用于资源管理器,该方法包括:
接收应用管理器发送的作业任务的作业资源请求;
确定所述作业资源请求是刚性资源请求时,将所述刚性资源请求添加至请求队列中;其中,所述请求队列中包括多个请求单元,不同作业任务所属的多个刚性资源请求被添加至对应的不同请求单元中;
启动多个第二线程,每个所述第二线程从所述请求队列中获取对应的每个所述请求单元中的多个刚性资源请求以进行资源分配处理。
7.根据权利要求6所述的资源调度方法,其特征在于,所述每个所述第二线程从所述请求队列中获取对应的每个所述请求单元中的多个刚性资源请求以进行资源分配处理,包括:
获取集群所有节点构成节点列表;
从所述节点列表中筛选过滤掉符合预设过滤条件的节点,得到待分配节点列表;
基于至少一个约束条件对所述待分配节点列表中的每个节点计算节点分值;
基于每个节点的节点分值为对应的请求单元中的多个刚性资源请求进行资源分配。
8.根据权利要求7所述的资源调度方法,其特征在于,所述基于每个节点的节点分值为对应的请求单元中的多个刚性资源请求进行资源分配,包括:
基于每个节点的节点分值进行节点排序,获取排序后的每个节点的可分配资源;
基于排序后的每个节点的可分配资源依次进行资源分配。
9.根据权利要求7所述的资源调度方法,其特征在于,所述方法还包括:
对所述待分配节点列表中的每个节点计算节点分值之前,获取每个节点的可分配资源的快照信息;
基于所述快照信息为每个节点计算节点分值。
10.根据权利要求8或9所述的资源调度方法,其特征在于,所述方法还包括:
每个所述第二线程在资源分配之后,判断分配结果不满足对应的作业任务的资源需求量时,将所述作业任务所属的刚性资源请求重新添加至所述请求队列中。
11.一种YARN集群资源调度装置,其特征在于,应用于资源管理器,该装置包括:
请求接收模块,用于接收应用管理器发送的作业任务的作业资源请求;
队列添加模块,用于确定所述作业资源请求是刚性资源请求时,将所述刚性资源请求添加至请求队列中;其中,所述请求队列中包括多个请求单元,不同作业任务所属的多个刚性资源请求被添加至对应的不同请求单元中;
预分配模块,用于启动多个第一线程,每个所述第一线程从所述请求队列中获取对应的每个所述请求单元中的多个刚性资源请求以进行资源预分配处理;
分配结果判断模块,用于使每个所述第一线程在资源预分配之后,判断每个预分配结果是否满足对应的作业任务的资源需求量;
分配结果提交模块,用于在所述分配结果判断模块的判断结果为是时,使每个所述第一线程分别提交所述预分配结果至所述应用管理器。
12.一种YARN集群资源调度装置,其特征在于,应用于资源管理器,该装置包括:
请求接收模块,用于接收应用管理器发送的作业任务的作业资源请求;
队列添加模块,用于确定所述作业资源请求是刚性资源请求时,将所述刚性资源请求添加至请求队列中;其中,所述请求队列中包括多个请求单元,不同作业任务所属的多个刚性资源请求被添加至对应的不同请求单元中;
分配模块,用于启动多个第二线程,每个所述第二线程从所述请求队列中获取对应的每个所述请求单元中的多个刚性资源请求以进行资源分配处理。
13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1~10任一项所述YARN集群资源调度方法的步骤。
14.一种计算机设备,其特征在于,包括:
处理器;以及
存储器,用于存储计算机程序;
其中,所述处理器配置为经由执行所述计算机程序来执行权利要求1~10任一项所述YARN集群资源调度方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110938082.4A CN113553189A (zh) | 2021-08-16 | 2021-08-16 | Yarn集群资源调度方法、装置、介质和计算机设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110938082.4A CN113553189A (zh) | 2021-08-16 | 2021-08-16 | Yarn集群资源调度方法、装置、介质和计算机设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113553189A true CN113553189A (zh) | 2021-10-26 |
Family
ID=78133981
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110938082.4A Pending CN113553189A (zh) | 2021-08-16 | 2021-08-16 | Yarn集群资源调度方法、装置、介质和计算机设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113553189A (zh) |
-
2021
- 2021-08-16 CN CN202110938082.4A patent/CN113553189A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3770774B1 (en) | Control method for household appliance, and household appliance | |
KR101959153B1 (ko) | 데이터베이스에서의 계좌와 관련된 거래 요청의 효율적인 처리를 위한 시스템 | |
CN113918270A (zh) | 基于Kubernetes的云资源调度方法及*** | |
US9448861B2 (en) | Concurrent processing of multiple received messages while releasing such messages in an original message order with abort policy roll back | |
CN106462593B (zh) | 大规模并行处理数据库的***和方法 | |
US9218210B2 (en) | Distributed processing system | |
CN108616424B (zh) | 一种资源调度方法、计算机设备和*** | |
CN107070645B (zh) | 比较数据表的数据的方法和*** | |
CN111190691A (zh) | 适用于虚拟机的自动迁移方法、***、装置及存储介质 | |
Zhong et al. | Speeding up Paulson’s procedure for large-scale problems using parallel computing | |
CN109150759B (zh) | 一种渐进式非阻塞机会资源预留方法及*** | |
CN115964176B (zh) | 云计算集群调度方法、电子设备和存储介质 | |
CN113553189A (zh) | Yarn集群资源调度方法、装置、介质和计算机设备 | |
CN116260876A (zh) | 基于K8s的AI应用调度方法、装置及电子设备 | |
CN114205354B (zh) | 事件管理***、事件管理方法、服务器及存储介质 | |
CN116263715A (zh) | 一种面向云原生智能排版服务的自动缩放***及方法 | |
CN112799820B (zh) | 数据处理方法、装置、电子设备、存储介质及程序产品 | |
CN111796934B (zh) | 任务下发方法、装置、存储介质和电子设备 | |
CN114020420A (zh) | 一种分布式待执行任务执行方法及***、存储介质、终端 | |
CN110033145B (zh) | 财务共享作业分单方法及装置、设备和存储介质 | |
CN115904673B (zh) | 云计算资源并发调度方法、装置、***、设备及介质 | |
CN115686802B (zh) | 云计算集群调度*** | |
US11502971B1 (en) | Using multi-phase constraint programming to assign resource guarantees of consumers to hosts | |
CN113157404B (zh) | 任务处理方法和装置 | |
US10733020B2 (en) | Resource allocation state management |
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 | ||
TA01 | Transfer of patent application right | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220701 Address after: 100190 1309, 13th floor, building 4, Zijin Digital Park, Haidian District, Beijing Applicant after: Beijing volcano Engine Technology Co.,Ltd. Address before: 100041 B-0035, 2 floor, 3 building, 30 Shixing street, Shijingshan District, Beijing. Applicant before: BEIJING BYTEDANCE NETWORK TECHNOLOGY Co.,Ltd. |