CN107665143B - 资源管理方法、装置及系统 - Google Patents

资源管理方法、装置及系统 Download PDF

Info

Publication number
CN107665143B
CN107665143B CN201610605242.2A CN201610605242A CN107665143B CN 107665143 B CN107665143 B CN 107665143B CN 201610605242 A CN201610605242 A CN 201610605242A CN 107665143 B CN107665143 B CN 107665143B
Authority
CN
China
Prior art keywords
target
resources
resource
scheduling request
resource scheduling
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
Application number
CN201610605242.2A
Other languages
English (en)
Other versions
CN107665143A (zh
Inventor
蔺若林
赵锋
崔鑫
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Cloud Computing Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201610605242.2A priority Critical patent/CN107665143B/zh
Publication of CN107665143A publication Critical patent/CN107665143A/zh
Application granted granted Critical
Publication of CN107665143B publication Critical patent/CN107665143B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开一种资源管理方法、装置及系统,属于通信技术领域。该方法包括:获取目标AM的资源调度请求,目标AM的资源调度请求携带目标AM所请求资源的目标数量;根据目标AM的资源调度请求,获取RM所管理的所有节点上当前时刻处于空闲状态的空闲资源的数量;根据空闲资源的数量,为目标AM分配目标数量个资源。本发明解决了集群资源的利用率较低的问题,达到了提高集群资源的利用率的效果。本发明用于资源管理。

Description

资源管理方法、装置及系统
技术领域
本发明涉及通信技术领域,特别涉及一种资源管理方法、装置及系统。
背景技术
另一资源协调器(英文:Yet Another Resource Negotiator;简称:YARN)系统是Hadoop 2.0(中文:分布式计算2.0)提出的一种新的资源管理系统,YARN系统包括:节点管理器(英文:Node Manager;简称:NM)、资源管理器(英文:Resource Manager;简称:RM)和应用程序管理器(英文:Application Master;简称:AM)。YARN集群中包括多个节点(英文:Node)和多个应用程序(英文:Application;简称:APP),每个节点上具有运行任务的资源,每个应用程序可以使用任一节点上的资源运行自身的任务,其中,该资源可以是Java虚拟机(英文:Java Virtual Machine;简称:JVM)的容器(英文:Container),每个节点对应一个用于管理该节点的NM,每个应用程序对应一个用于管理该应用程序的AM,RM用于通过NM和AM对集群资源进行管理和调度,使不同的应用程序能够运行自身的任务。
相关技术中,每个AM可以根据自身所管理的应用程序的业务需求向RM发送资源调度请求,该资源调度请求中可以包括请求资源的数量、大小等,第一NM可以向RM发送心跳包触发RM进行资源调度,心跳包中可以包括第一NM所管理的节点的资源使用情况,第一NM为多个NM中的任意一个NM,RM在接收到第一NM发送的心跳包后,可以根据第一NM所管理的节点的资源使用情况确定第一NM所管理的节点中是否存在空闲资源,若第一NM所管理的节点中存在空闲资源,则RM按照预设规则从多个发送资源调度请求的AM中筛选出一个AM,并为该AM分配一个资源,若该AM所管理的应用程序需要多个资源才能运行任务,则该AM得到该资源后,可以对该资源进行囤积,直至分配到能够运行相应任务的多个资源,AM使其管理的应用程序在该多个资源上运行相应的任务。
在实现本发明的过程中,发明人发现相关技术至少存在以下问题:
当应用程序需要多个资源才能够运行自身的任务时,AM需要对资源进行囤积,由于AM囤积资源的过程中对该资源进行了占用,导致其他应用程序无法使用该资源,因此集群资源的利用率较低。
发明内容
为了解决相关技术中集群资源的利用率较低的问题,本发明实施例提供一种资源管理方法、装置及系统。所述技术方案如下:
第一方面,提供了一种资源管理方法,所述方法包括:
获取目标应用程序管理器AM的资源调度请求,所述目标AM的资源调度请求携带所述目标AM所请求资源的目标数量;
根据所述目标AM的资源调度请求,获取资源管理器RM所管理的所有节点上当前时刻处于空闲状态的空闲资源的数量;
根据所述空闲资源的数量,为所述目标AM分配所述目标数量个资源。
RM可以获取目标AM的资源调度请求,目标AM的资源调度请求携带目标AM所请求资源的目标数量。可选地,RM记录或者存储有各个AM发送的资源调度请求,RM可以在自身记录或者存储的资源调度请求中读取目标AM的资源调度请求。
获取目标AM的资源调度请求后,RM可以根据目标AM的资源调度请求,获取RM所管理的所有节点上的空闲资源的数量。可选地,RM可以遍历RM所管理的所有节点,来获取RM所管理的所有节点上的空闲资源的数量。
获取RM所管理的所有节点上的空闲资源的数量后,RM可以根据空闲资源的数量,为目标AM分配目标数量个资源。需要说明的是,RM为目标AM分配目标资源时,可以遵循相关技术中RM的capacity(中文:容量)原则和Fair(中文:公平)原则,本发明实施例在此不再赘述。
可选地,所述根据所述空闲资源的数量,为所述目标AM分配所述目标数量个资源,包括:
判断所述空闲资源的数量是否小于所述目标数量;
若所述空闲资源的数量不小于所述目标数量,则在所述空闲资源中为所述目标AM分配所述目标数量个资源。
RM可以判断空闲资源的数量是否小于目标数量,若空闲资源的数量不小于目标数量,则RM在空闲资源中为目标AM分配目标数量个资源。可选地,RM可以通过将空闲资源的数量与目标数量进行比较来判断空闲资源的数量是否小于目标数量,通过向目标AM发送空闲资源所在节点的节点信息(比如节点标识等)实现对资源的分配。其中,RM可以在一个节点上的空闲资源中为目标AM分配目标数量个资源,也可以在多个节点上的空闲资源中为目标AM分配目标数量个资源,RM在该多个节点上的空闲资源为目标AM分配的资源的总和等于目标数量,本发明实施例对此不作限定。
可选地,所述根据所述空闲资源的数量,为所述目标AM分配所述目标数量个资源,还包括:
若所述空闲资源的数量小于所述目标数量,则预估为所述目标AM分配所述目标数量个资源的分配时长;
判断所述分配时长是否大于分配时长阈值;
若所述分配时长不大于所述分配时长阈值,则为所述目标AM预留所述空闲资源,并在所述RM所管理的任一节点释放资源时,为所述目标AM预留释放资源;
根据所述分配时长阈值以及为所述目标AM预留的资源的数量,为所述目标AM分配所述目标数量个资源。
RM可以预估为目标AM分配目标数量个资源的分配时长,然后判断该分配时长是否大于分配时长阈值,若该分配时长不大于分配时长阈值,则RM为目标AM预留空闲资源,并在RM所管理的任一节点释放资源时,为目标AM预留释放资源。其中,分配时长可以为T,分配时长阈值可以为Tmax,该分配时长阈值Tmax的具体取值可以根据实际情况设置,示例地,Tmx=10分钟。假设T=3.75分钟,由于3.75小于10,因此,分配时长不大于分配时长阈值,RM为目标AM预留空闲资源,并在RM所管理的任一节点释放资源时,为目标AM预留释放资源。
可选地,所述根据所述分配时长阈值以及为所述目标AM预留的资源的数量,为所述目标AM分配所述目标数量个资源,包括:
在从为所述目标AM预留资源的时刻开始的第一预设时长内,当为所述目标AM预留的资源的数量等于所述目标数量时,为所述目标AM分配所述目标数量个资源,所述目标数量个资源包括所述空闲资源和为所述目标AM预留的释放资源,所述第一预设时长为所述分配时长阈值所对应的时长;
在从为所述目标AM预留资源的时刻开始至所述第一预设时长结束时,当为所述目标AM预留的资源的数量不小于所述目标数量时,在为所述目标AM预留的资源中为所述目标AM分配所述目标数量个资源。
可选地,所述方法还包括:
在从为所述目标AM预留资源的时刻开始至所述第一预设时长结束时,当为所述目标AM预留的资源的数量小于所述目标数量时,释放为所述目标AM预留的资源。
本发明实施例中,当集群中的其他AM所管理的应用程序突然需要运行紧急任务时,若RM长时间为目标AM预留资源,会导致具有紧急任务的应用程序无法及时运行自身的任务,因此,本发明实施例通过在从为目标AM预留资源的时刻开始至第一预设时长结束时,当为目标AM预留的资源的数量小于目标数量时,释放为目标AM预留的资源,可以使具有紧急任务的应用程序能够及时运行自身的任务。
可选地,所述预估为所述目标AM分配所述目标数量个资源的分配时长,包括:
获取由所述RM所管理的节点所构成的集群的资源释放率;
获取由所述RM所管理的节点所构成的集群的繁忙程度;
根据所述空闲资源的数量、所述目标数量、所述资源释放率和所述繁忙程度,采用分配时长计算公式计算所述分配时长;
其中,所述分配时长计算公式为:T=K*(B-C)/R,T表示所述分配时长,K表示所述繁忙程度,B表示所述目标数量,C表示所述空闲资源的数量,R表示所述资源释放率。
RM可以获取集群的资源释放率和集群的繁忙程度,然后根据空闲资源的数量、目标数量、资源释放率和繁忙程度,采用分配时长计算公式计算分配时长。
示例地,资源释放率可以采用字母R表示,R=12个每分钟。
RM可以统计由RM所管理的节点所构成的集群的历史调度数据,然后根据集群的历史调度数据计算集群的繁忙程度,该繁忙程度可以采用字母K表示,集群的历史调度数据可以包括集群的历史资源利用率a、历史应用提交数量b和历史吞吐量c,历史资源利用率a可以为过去的N天中集群的资源利用率,历史应用提交数量b可以为过去的N天中集群中的所有应用程序请求资源的总数量,历史吞吐量c可以为过去的N天中集群的吞吐量,该繁忙程度K与集群的历史资源利用率a、历史应用提交数量b和历史吞吐量c的关系可以为K=f(a,b,c),也即是,集群的繁忙程度K是一个以集群的历史资源利用率a、历史应用提交数量b和历史吞吐量c为变量的函数,RM可以根据该函数K=f(a,b,c)计算集群的繁忙程度。示例地,K=1.5。
RM获取集群的资源释放率和繁忙程度后,可以根据空闲资源的数量、目标数量、资源释放率和繁忙程度,采用分配时长计算公式计算分配时长,其中,分配时长计算公式为:T=K*(B-C)/R,T表示分配时长,K表示繁忙程度,B表示目标数量,C表示空闲资源的数量,R表示资源释放率。示例地,C=3个、B=8个、R=2个每分钟、K=1.5,因此,将C=3个、B=8个、R=2个每分钟、K=1.5代入分配时长计算公式T=K*(B-C)/R,可以确定分配时长T=1.5*(8-3)/2=3.75分钟。
可选地,所述获取由所述RM所管理的节点所构成的集群的资源释放率,包括:
统计第二时刻与预估所述分配时长的时刻之间的时间段内所述集群的资源释放总量,所述第二时刻位于所述预估所述分配时长的时刻之前,且所述预估所述分配时长的时刻与所述第二时刻之间的时间差等于第二预设时长;
将所述资源释放总量与所述第二预设时长的比值,作为所述资源释放率。
每个应用程序在执行完任务后,可以对其在运行任务的过程中占用的资源进行释放,以便于其他应用程序能够使用该资源,每个节点的NM会定时向RM发送心跳包,该心跳包中包含自身所管理的节点的资源使用情况,RM可以根据NM发送的心跳包统计第二时刻与预估分配时长的时刻之间的时间段内集群的资源释放总量,其中,第二时刻位于预估分配时长的时刻之前,且预估分配时长的时刻与第二时刻之间的时间差等于第二预设时长。第二预设时长的具体取值可以根据实际情况设置,可选地,第二预设时长为5分钟,本发明实施例对此不作限定。
统计第二时刻与预估分配时长的时刻之间的时间段内资源释放总量之后,RM可以将资源释放总量与第二预设时长的比值作为资源释放率。可选地,RM可以先计算出资源释放总量与第二预设时长的比值,然后将资源释放总量与第二预设时长的比值,作为资源释放率,该资源释放率可以采用字母R表示。示例地,资源释放总量可以为10个,第二预设时长可以为5分钟,则RM将资源释放总量10个与第二预设时长5分钟的比值作为资源释放率,资源释放率R=10个/5分钟=2个每分钟。
可选地,在所述获取目标应用程序管理器AM的资源调度请求之前,所述方法还包括:
接收至少一个AM发送的资源调度请求;
在接收到第一节点管理器NM发送的心跳包时,按照预设规则对所述至少一个AM进行筛选,所述第一NM为管理第一节点的NM,所述第一节点为所述RM所管理的节点中的任一节点;
判断筛选出的AM的资源调度请求是否为成组资源调度请求;
若所述筛选出的AM的资源调度请求是所述成组资源调度请求,则将所述筛选出的AM确定为所述目标AM。
在本发明实施例中,集群中包括多个应用程序,每个应用程序对应一个用于管理应用程序的AM,当应用程序需要使用资源运行任务时,相应的AM可以通过向RM发送资源调度请求来请求RM为其分配资源,使得应用程序能够运行自身的任务。其中,资源调度请求中可以包括请求资源的数量、资源调度请求的优先级信息等。在本发明实施例中,AM在向RM发送资源调度请求时,可以遵循AM与RM之间的协议。至少一个AM可以向RM发送资源调度请求,RM可以接收至少一个AM发送的资源调度请求,并对该至少一个AM发送的资源调度请求进行记录或存储。
RM可以管理多个节点,每个节点上都具有运行任务的资源,且每个节点对应一个用于管理该节点的NM,每个NM可以定时向RM发送心跳包来报告自身所管理的节点的资源使用情况,其中,心跳包中可以包括NM所管理的节点的资源的使用情况,该资源的使用情况可以包括已使用资源的数量、未使用资源的数量,资源的总数量等等。多个NM中的任一NM向RM发送心跳包时,RM都可以接收该任一NM发送的心跳包,然后对至少一个AM进行筛选。
RM筛选出AM后,可以判断筛选出的AM的资源调度请求是否为成组资源调度请求,若筛选出的AM的资源调度请求是成组资源调度请求,则RM将筛选出的AM确定为目标AM。其中,成组资源调度请求指的是AM请求RM一次为其分配多个资源的资源调度请求。
可选地,所述判断所述筛选出的AM的资源调度请求是否为成组资源调度请求,包括:
判断所述筛选出的AM的资源调度请求是否为通过成组资源申请接口发送的资源调度请求;
若所述筛选出的AM的资源调度请求是通过所述成组资源申请接口发送的资源调度请求,则确定所述筛选出的AM的资源调度请求是所述成组资源调度请求。
在本发明实施例中,RM设置有成组资源申请接口,AM可以通过该成组资源申请接口向RM发送成组资源调度请求,RM也可以通过该成组资源申请接口接收AM发送的资源调度请求,因此,RM可以通过判断筛选出AM的资源调度请求是否是通过成组资源申请接口发送的资源调度请求,来判断筛选出的AM的资源调度请求是成组资源调度请求。若RM确定筛选出的AM的资源调度请求是通过成组资源申请接口发送的资源调度请求,则RM确定筛选出的AM的资源调度请求是成组资源调度请求。
第二方面,提供一种资源管理装置,所述装置包括:
第一获取模块,用于获取目标应用程序管理器AM的资源调度请求,所述目标AM的资源调度请求携带所述目标AM所请求资源的目标数量;
第二获取模块,用于根据所述目标AM的资源调度请求,获取资源管理器RM所管理的所有节点上当前时刻处于空闲状态的空闲资源的数量;
分配模块,用于根据所述空闲资源的数量,为所述目标AM分配所述目标数量个资源。
可选地,所述分配模块,包括:
第一判断单元,用于判断所述空闲资源的数量是否小于所述目标数量;
第一分配单元,用于在所述空闲资源的数量不小于所述目标数量时,在所述空闲资源中为所述目标AM分配所述目标数量个资源。
可选地,所述分配模块,还包括:
预估单元,用于在所述空闲资源的数量小于所述目标数量时,预估为所述目标AM分配所述目标数量个资源的分配时长;
第二判断单元,用于判断所述分配时长是否大于分配时长阈值;
预留单元,用于在所述分配时长不大于所述分配时长阈值时,为所述目标AM预留所述空闲资源,并在所述RM所管理的任一节点释放资源时,为所述目标AM预留释放资源;
第二分配单元,用于根据所述分配时长阈值以及为所述目标AM预留的资源的数量,为所述目标AM分配所述目标数量个资源。
可选地,所述第二分配单元,用于:
在从为所述目标AM预留资源的时刻开始的第一预设时长内,当为所述目标AM预留的资源的数量等于所述目标数量时,为所述目标AM分配所述目标数量个资源,所述目标数量个资源包括所述空闲资源和为所述目标AM预留的释放资源,所述第一预设时长为所述分配时长阈值所对应的时长;
在从为所述目标AM预留资源的时刻开始至所述第一预设时长结束时,当为所述目标AM预留的资源的数量不小于所述目标数量时,在为所述目标AM预留的资源中为所述目标AM分配所述目标数量个资源。
可选地,所述装置还包括:
释放模块,用于在从为所述目标AM预留资源的时刻开始至所述第一预设时长结束时,当为所述目标AM预留的资源的数量小于所述目标数量时,释放为所述目标AM预留的资源。
可选地,所述预估单元,包括:
第一获取子单元,用于获取由所述RM所管理的节点所构成的集群的资源释放率;
第二获取子单元,用于获取由所述RM所管理的节点所构成的集群的繁忙程度;
计算子单元,用于根据所述空闲资源的数量、所述目标数量、所述资源释放率和所述繁忙程度,采用分配时长计算公式计算所述分配时长;
其中,所述分配时长计算公式为:T=K*(B-C)/R,T表示所述分配时长,K表示所述繁忙程度,B表示所述目标数量,C表示所述空闲资源的数量,R表示所述资源释放率。
可选地,所述第一获取子单元,用于:
统计第二时刻与预估所述分配时长的时刻之间的时间段内所述集群的资源释放总量,所述第二时刻位于所述预估所述分配时长的时刻之前,且所述预估所述分配时长的时刻与所述第二时刻之间的时间差等于第二预设时长;
将所述资源释放总量与所述第二预设时长的比值,作为所述资源释放率。
可选地,所述装置还包括:
接收模块,用于接收至少一个AM发送的资源调度请求;
筛选模块,用于在接收到第一节点管理器NM发送的心跳包时,按照预设规则对所述至少一个AM进行筛选,所述第一NM为管理第一节点的NM,所述第一节点为所述RM所管理的节点中的任一节点;
判断模块,用于判断筛选出的AM的资源调度请求是否为成组资源调度请求;
确定模块,用于在所述筛选出的AM的资源调度请求是所述成组资源调度请求时,将所述筛选出的AM确定为所述目标AM。
可选地,所述判断模块,用于:
判断所述筛选出的AM的资源调度请求是否为通过成组资源申请接口发送的资源调度请求;
若所述筛选出的AM的资源调度请求是通过所述成组资源申请接口发送的资源调度请求,则确定所述筛选出的AM的资源调度请求是所述成组资源调度请求。
第三方面,提供一种资源管理器,所述资源管理器包括:处理器,
所述处理器,用于:
获取目标应用程序管理器AM的资源调度请求,所述目标AM的资源调度请求携带所述目标AM所请求资源的目标数量;
根据所述目标AM的资源调度请求,获取资源管理器RM所管理的所有节点上当前时刻处于空闲状态的空闲资源的数量;
根据所述空闲资源的数量,为所述目标AM分配所述目标数量个资源。
可选地,所述处理器,用于:
判断所述空闲资源的数量是否小于所述目标数量;
若所述空闲资源的数量不小于所述目标数量,则在所述空闲资源中为所述目标AM分配所述目标数量个资源。
可选地,所述处理器,还用于:
若所述空闲资源的数量小于所述目标数量,则预估为所述目标AM分配所述目标数量个资源的分配时长;
判断所述分配时长是否大于分配时长阈值;
若所述分配时长不大于所述分配时长阈值,则为所述目标AM预留所述空闲资源,并在所述RM所管理的任一节点释放资源时,为所述目标AM预留释放资源;
根据所述分配时长阈值以及为所述目标AM预留的资源的数量,为所述目标AM分配所述目标数量个资源。
可选地,所述处理器,还用于:
在从为所述目标AM预留资源的时刻开始的第一预设时长内,当为所述目标AM预留的资源的数量等于所述目标数量时,为所述目标AM分配所述目标数量个资源,所述目标数量个资源包括所述空闲资源和为所述目标AM预留的释放资源,所述第一预设时长为所述分配时长阈值所对应的时长;
在从为所述目标AM预留资源的时刻开始至所述第一预设时长结束时,当为所述目标AM预留的资源的数量不小于所述目标数量时,在为所述目标AM预留的资源中为所述目标AM分配所述目标数量个资源。
可选地,所述处理器,还用于:
在从为所述目标AM预留资源的时刻开始至所述第一预设时长结束时,当为所述目标AM预留的资源的数量小于所述目标数量时,释放为所述目标AM预留的资源。
可选地,所述处理器,还用于:
获取由所述RM所管理的节点所构成的集群的资源释放率;
获取由所述RM所管理的节点所构成的集群的繁忙程度;
根据所述空闲资源的数量、所述目标数量、所述资源释放率和所述繁忙程度,采用分配时长计算公式计算所述分配时长;
其中,所述分配时长计算公式为:T=K*(B-C)/R,T表示所述分配时长,K表示所述繁忙程度,B表示所述目标数量,C表示所述空闲资源的数量,R表示所述资源释放率。
可选地,所述处理器,还用于:
统计第二时刻与预估所述分配时长的时刻之间的时间段内所述集群的资源释放总量,所述第二时刻位于所述预估所述分配时长的时刻之前,且所述预估所述分配时长的时刻与所述第二时刻之间的时间差等于第二预设时长;
将所述资源释放总量与所述第二预设时长的比值,作为所述资源释放率。
可选地,所述资源管理器还包括:接收机,所述接收机与所述处理器耦合,
所述接收机,用于接收至少一个AM发送的资源调度请求;
所述处理器,用于在接收到第一节点管理器NM发送的心跳包时,按照预设规则对所述至少一个AM进行筛选,所述第一NM为管理第一节点的NM,所述第一节点为所述RM所管理的节点中的任一节点;
所述处理器,用于判断筛选出的AM的资源调度请求是否为成组资源调度请求;
所述处理器,用于在所述筛选出的AM的资源调度请求是所述成组资源调度请求时,将所述筛选出的AM确定为所述目标AM。
可选地,所述处理器,用于:
判断所述筛选出的AM的资源调度请求是否为通过成组资源申请接口发送的资源调度请求;
若所述筛选出的AM的资源调度请求是通过所述成组资源申请接口发送的资源调度请求,则确定所述筛选出的AM的资源调度请求是所述成组资源调度请求。
第四方面,提供一种资源管理系统,所述资源管理系统包括:
应用程序管理器AM、节点管理器NM和资源管理器RM;
所述RM包括第二方面所述的资源管理装置;或者,
所述RM为第三方面所述的资源管理器。
本发明实施例提供的技术方案带来的有益效果是:
本发明实施例提供的资源管理方法、装置及系统,通过获取目标AM的资源调度请求,目标AM的资源调度请求携带目标AM所请求资源的目标数量;根据目标AM的资源调度请求,获取RM所管理的所有节点上当前时刻处于空闲状态的空闲资源的数量;根据空闲资源的数量,为目标AM分配目标数量个资源。由于RM获取了RM所管理的所有节点上的空闲资源的数量,并根据空闲资源的数量,为目标AM分配目标数量个资源,因此,无需AM对资源进行囤积,解决了相关技术中集群资源的利用率较低的问题,达到了提高集群资源的利用率的效果。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本发明各个实施例所涉及的一种实施环境的示意图;
图2是本发明实施例提供的一种资源管理方法的流程图;
图3-1是本发明实施例提供的另一种资源管理方法的流程图;
图3-2是图3-1所示实施例提供的一种判断筛选出的AM的资源调度请求是否为成组资源调度请求的方法流程图;
图3-3是图3-1所示实施例提供的一种目标AM所请求资源的目标数量与RM所管理的所有节点的资源数量的示意图;
图3-4是图3-1所示实施例提供的另一种目标AM所请求资源的目标数量与RM所管理的所有节点的资源数量的示意图;
图3-5是图3-1所示实施例提供的一种根据空闲资源的数量为目标AM分配目标数量个资源的方法流程图;
图3-6是图3-1所示实施例提供的一种预估为目标AM分配目标数量个资源的分配时长的方法流程图;
图3-7是图3-1所示实施例提供的一种获取由RM所管理的节点所构成的集群的资源释放率的方法流程图;
图3-8是图3-1所示实施例提供的再一种目标AM所请求资源的目标数量与RM所管理的所有节点的资源数量的示意图;
图3-9是图3-1所示实施例提供的一种根据分配时长阈值以及为目标AM预留的资源的数量为目标AM分配目标数量个资源的方法流程图;
图4是本发明实施例提供的一种资源管理装置的框图;
图5-1是本发明实施例提供的另一种资源管理装置的框图;
图5-2是图5-1所示实施例提供的一种分配模块的框图;
图5-3是图5-1所示实施例提供的一种预估单元的框图;
图6是本发明实施例提供的一种资源管理器的框图;
图7是本发明实施例提供的一种资源管理系统的框图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
请参考图1,其示出了本发明各个实施例所涉及一种实施环境的示意图,参见图1,该实施环境提供一种YARN系统,该YARN系统可以包括:RM-01、多个节点、多个APP、多个NM和多个AM,该多个节点中的每个节点上都具有运行任务的资源,该资源可以是JVM的Container,该多个节点中的每个节点对应一个用于管理该节点的NM,该多个APP中的每个APP对应一个用于管理该APP的AM。可选地,管理节点的NM可以设置在相应的节点上,管理APP的AM可以设置在相应的APP上。
如图1所示,在本实施环境中,多个节点包括节点021、节点022和节点023,多个NM包括NM-0211、NM-0221和NM-0231,NM-0211用于管理节点021、NM-0221用于管理节点022,NM-0231用于管理节点023;多个APP包括APP-031、APP-032、APP-033和APP-034,多个AM包括AM-0311、AM-0321、AM-0331和AM-0341,AM-0311用于管理APP-031,AM-0321用于管理APP-032,AM-0331用于管理APP-033,AM-0341用于管理APP-034。
在本实施环境中,多个AM中的每个AM可以向RM-01发送资源调度请求,该资源调度请求可以包括该资源调度请求的优先级信息、AM请求资源的数量、请求资源的大小、请求资源所在节点的节点信息、请求资源所在节点的标签信息等等,RM-01可以接收每个AM发送的资源调度请求,并对每个AM发送的资源调度请求进行记录或存储;多个NM中的每个NM可以定时向RM-01发送心跳包触发RM-01进行资源调度,该心跳包中可以包括NM所管理的节点的资源的使用情况,比如,包括已使用资源的数量、未使用资源的数量,资源的总数量等等,RM-01可以接收每个NM发送的心跳包,并在接收到任一NM发送的心跳包时,进行资源调度。具体地,RM-01可以按照预设规则(比如优先级信息)对发送资源调度请求的多个AM进行筛选,然后根据筛选出的AM发送的资源调度请求,为该筛选出的AM分配资源,实现资源调度。
示例地,如图1所示,AM-0311、AM-0321、AM-0331和AM-0341都可以向RM-01发送资源调度请求,RM-01可以接收AM-0311、AM-0321、AM-0331和AM-0341发送的资源调度请求,并对AM-0311、AM-0321、AM-0331和AM-0341发送的资源调度请求进行记录或者存储,NM-0211可以向RM-01发送心跳包触发RM-01进行资源调度,RM-01接收到NM-0211发送的心跳包时,可以根据AM-0311、AM-0321、AM-0331和AM-0341发送的资源调度请求的优先级信息对AM-0311、AM-0321、AM-0331和AM-0341进行筛选,假设RM-01筛选出的AM是AM-0311,则RM-01为该AM-0311分配资源,实现资源调度。
需要说明的是,在YRAN系统中,RM中包括资源调度器(英文:Resource Scheduler;简称:RS),且RS为RM的核心,RS主要负责集群资源的管理和调度,因此,本实施环境以及后续实施例中进行资源调度的执行主体实际上可以是RS,本实施环境对此不作限定。
此外,为了使读者更清楚的了解本发明实施例提供的资源管理方法与相关技术中的资源管理方法的区别,在对本发明实施例提供的资源管理方法进行详细阐述之前,先以图1所示实施环境为例对相关技术中的资源管理方法进行简单说明,具体如下:
相关技术中,YARN系统采用双层资源调度机制,第一层是RM将资源分配给AM,第二层是AM将RM分配的资源分配给应用程序的内部任务。RM主要关注第一层的调度问题,第二层的调度策略由AM决定。参见图1,假设AM-0311、AM-0321、AM-0331和AM-0341都向RM-01发送了资源调度请求,RM-01不会对各个AM发送的资源调度请求的类型进行区分(也即是不区分AM发送的资源调度请求是否是成组资源调度请求,成组资源调度请求指的是一次请求多个资源的请求),NM-0211可以向RM-01发送心跳包触发RM-01进行第一调度周期的资源调度。在具体调度时,RM-01可以按照资源调度请求中的优先级信息对AM-0311、AM-0321、AM-0331和AM-0341进行筛选,假设RM-01筛选到的是AM-0311,则RM-01在NM-0211所管理的节点上为AM-0311分配一个资源,第一调度周期结束;之后,NM-0221可以向RM-01发送心跳包触发RM-01进行第二调度周期的资源调度。在具体调度时,RM-01可以按照优先级对AM-0311、AM-0321、AM-0331和AM-0341进行筛选,由于RM-01在第一调度周期内已经为AM-0311分配了一个资源,因此,在第二调度周期内,AM-0311的优先级降低,AM-0311很难被RM-01筛选出,假设第二调度周期内RM-01筛选到的是AM-0331,则RM-01在NM-0221所管理的节点上为AM-0331分配一个资源,第二调度周期结束,以此类推。假设APP-031需要5个资源才能运行任务,则AM-0311在接收到RM-01为其分配的资源后,会对资源进行囤积,直至囤积够5个资源,AM-0311使APP-031运行任务。根据以上可知:
首先,在AM-0311囤积资源的过程中,集群AM-0321、AM-0331和AM-0341无法使用被AM-0311囤积的资源,因此,相关技术中的资源的利用率较低。
其次,AM-0311需要经过至少5个调度周期才能囤积够5个资源,导致RM-01为AM-0311分配资源的时间较长,且当系统繁忙、应用程序较多时,RM-01为AM-0311分配资源的时间会更长。因此,相关技术中RM为AM分配资源的时间较长。
再次,假设节点021、节点022和节点023中的每个节点具有2个资源,而AM-0311需要4个资源,AM-0331也需要4个资源,RM在经过若干个调度周期后,为AM-0311分配3个资源,为AM-0331也分配3个资源,由于AM-0311和AM-0331都未获取到足够的资源。所以AM-0311和AM-0331都占有目前已分配的资源不释放,同时都在等待RM-01分配所需的一个资源,而此时集群已无可用资源分配,因此,相关技术中的中的资源管理方法容易导致集群资源死锁。
请参考图2,其示出了本发明实施例提供的一种资源管理方法的流程图,该资源管理方法可以由图1所示实施环境中的RM-01执行,参见图2,该资源管理方法可以包括:
步骤201、获取目标应用程序管理器AM的资源调度请求,目标AM的资源调度请求携带目标AM所请求资源的目标数量。
步骤202、根据目标AM的资源调度请求,获取资源管理器RM所管理的所有节点上当前时刻处于空闲状态的空闲资源的数量。
步骤203、根据空闲资源的数量,为目标AM分配目标数量个资源。
综上所述,本发明实施例提供的资源管理方法,通过获取目标AM的资源调度请求,目标AM的资源调度请求携带目标AM所请求资源的目标数量;根据目标AM的资源调度请求,获取RM所管理的所有节点上当前时刻处于空闲状态的空闲资源的数量;根据空闲资源的数量,为目标AM分配目标数量个资源。由于获取了RM所管理的所有节点上的空闲资源的数量,并根据空闲资源的数量,为目标AM分配目标数量个资源,因此,无需AM对资源进行囤积,解决了相关技术中集群资源的利用率较低的问题,达到了提高集群资源的利用率的效果。
可选地,步骤203可以包括:
判断空闲资源的数量是否小于目标数量;
若空闲资源的数量不小于目标数量,则在空闲资源中为目标AM分配目标数量个资源。
可选地,步骤203还可以包括:
若空闲资源的数量小于目标数量,则预估为目标AM分配目标数量个资源的分配时长;
判断分配时长是否大于分配时长阈值;
若分配时长不大于分配时长阈值,则为目标AM预留空闲资源,并在RM所管理的任一节点释放资源时,为目标AM预留释放资源;
根据分配时长阈值以及为目标AM预留的资源的数量,为目标AM分配目标数量个资源。
可选地,根据分配时长阈值以及为目标AM预留的资源的数量,为目标AM分配目标数量个资源,包括:
在从为目标AM预留资源的时刻开始的第一预设时长内,当为目标AM预留的资源的数量等于目标数量时,为目标AM分配目标数量个资源,目标数量个资源包括空闲资源和为目标AM预留的释放资源,第一预设时长为分配时长阈值所对应的时长;
在从为目标AM预留资源的时刻开始至第一预设时长结束时,当为目标AM预留的资源的数量不小于目标数量时,在为目标AM预留的资源中为目标AM分配目标数量个资源。
可选地,该方法还包括:
在从为目标AM预留资源的时刻开始至第一预设时长结束时,当为目标AM预留的资源的数量小于目标数量时,释放为目标AM预留的资源。
可选地,预估为目标AM分配目标数量个资源的分配时长,包括:
获取由RM所管理的节点所构成的集群的资源释放率;
获取由RM所管理的节点所构成的集群的繁忙程度;
根据空闲资源的数量、目标数量、资源释放率和繁忙程度,采用分配时长计算公式计算分配时长;
其中,分配时长计算公式为:T=K*(B-C)/R,T表示分配时长,K表示繁忙程度,B表示目标数量,C表示空闲资源的数量,R表示资源释放率。
可选地,获取由RM所管理的节点所构成的集群的资源释放率,包括:
统计第二时刻与预估分配时长的时刻之间的时间段内集群的资源释放总量,第二时刻位于预估分配时长的时刻之前,且预估分配时长的时刻与第二时刻之间的时间差等于第二预设时长;
将资源释放总量与第二预设时长的比值,作为资源释放率。
可选地,在步骤201之前,该方法还可以包括:
接收至少一个AM发送的资源调度请求;
在接收到第一节点管理器NM发送的心跳包时,按照预设规则对至少一个AM进行筛选,第一NM为管理第一节点的NM,第一节点为RM所管理的节点中的任一节点;
判断筛选出的AM的资源调度请求是否为成组资源调度请求;
若筛选出的AM的资源调度请求是成组资源调度请求,则将筛选出的AM确定为目标AM。
可选地,判断筛选出的AM的资源调度请求是否为成组资源调度请求,包括:
判断筛选出的AM的资源调度请求是否为通过成组资源申请接口发送的资源调度请求;
若筛选出的AM的资源调度请求是通过成组资源申请接口发送的资源调度请求,则确定筛选出的AM的资源调度请求是成组资源调度请求。
综上所述,本发明实施例提供的资源管理方法,通过获取目标AM的资源调度请求,目标AM的资源调度请求携带目标AM所请求资源的目标数量;根据目标AM的资源调度请求,获取RM所管理的所有节点上当前时刻处于空闲状态的空闲资源的数量;根据空闲资源的数量,为目标AM分配目标数量个资源。由于获取了RM所管理的所有节点上的空闲资源的数量,并根据空闲资源的数量,为目标AM分配目标数量个资源,因此,无需AM对资源进行囤积,解决了相关技术中集群资源的利用率较低的问题,达到了提高集群资源的利用率的效果。
请参考图3-1,其示出了本发明实施例提供的另一种资源管理方法的流程图,该资源管理方法可以由图1所示实施环境中的RM-01执行,参见图3-1,该资源管理方法可以包括:
步骤301、接收至少一个AM发送的资源调度请求。执行步骤302。
在本发明实施例中,集群中包括多个应用程序,每个应用程序对应一个用于管理该应用程序的AM,当应用程序需要使用资源运行任务时,相应的AM可以通过向RM发送资源调度请求来请求RM为其分配资源,使应用程序能够运行自身的任务。其中,资源调度请求中可以包括请求资源的数量、资源调度请求的优先级信息等。在本发明实施例中,AM在向RM发送资源调度请求时,可以遵循AM与RM之间的协议。
其中,RM可以接收至少一个AM发送的资源调度请求,并对该至少一个AM发送的资源调度请求进行记录或存储。示例地,至少一个AM可以包括图1所示实施环境中的AM-0311、AM-0321、AM-0331和AM-0341,RM-01可以接收AM-0311、AM-0321、AM-0331和AM-0341发送的资源调度请求并对每个AM发送的资源调度请求进行记录或存储。
步骤302、在接收到第一NM发送的心跳包时,按照预设规则对至少一个AM进行筛选,第一NM为管理第一节点的NM,第一节点为RM所管理的节点中的任一节点。执行步骤303。
在本发明实施例中,RM可以管理多个节点,每个节点上都具有运行任务的资源,且每个节点对应一个用于管理该节点的NM,每个NM可以定时向RM发送心跳包来报告自身所管理的节点的资源使用情况,其中,心跳包中可以包括NM所管理的节点的资源的使用情况,该资源的使用情况可以包括已使用资源的数量、未使用资源的数量,资源的总数量等等。
其中,多个NM中的任一NM向RM发送心跳包时,RM都可以接收该任一NM发送的心跳包。可选地,RM中可以包括心跳事件处理组件,该心跳事件处理组件可以对NM发送的心跳包进行处理。
示例地,RM所管理的节点可以包括图1所示实施环境中的节点021、节点022和节点023,NM-0211用于管理节点021,NM-0221用于管理节点022,NM-0231用于管理节点023,NM-0211可以向RM-01发送心跳包报告节点021的资源使用情况,NM-0221可以向RM-01发送心跳包报告节点022的资源使用情况,NM-0231可以向RM-01发送心跳包报告节点023的资源使用情况。
在接收到第一NM发送的心跳包时,RM可以按照预设规则对步骤301中发送资源调度请求的至少一个AM进行筛选,其中,第一NM为管理第一节点的NM,第一节点为RM所管理的节点中的任一节点。示例地,第一节点为图1所示实施环境中的节点021,第一NM为图1所示实施环境中的NM-0211,也即是,RM-01接收到NM-0211发送的心跳包时,按照预设规则对步骤301中发送资源调度请求的至少一个AM进行筛选。
在本发明实施例中,预设规则可以根据实际情况设置,比如,预设规则可以为优先级,RM可以根据每个AM发送的资源调度请求中的优先级信息确定每个AM对应的优先级,然后按照优先级对至少一个AM进行筛选。可选地,RM筛选出至少一个AM中优先级最高的AM。示例地,假设图1所示实施环境中的AM-0311、AM-0321、AM-0331和AM-0341的优先级如下表1所示:
表1
AM 优先级
AM-0311 1级
AM-0321 3级
AM-0331 4级
AM-0341 2级
参见表1,AM-0311对应的优先级为1级,AM-0321对应的优先级为3级,AM-0331对应的优先级为4级,AM-0341对应的优先级为2级,所以优先级最高的AM为AM-0311,因此,RM-01筛选出的AM为AM-0311。
需要说明的是,本发明实施例中,按照预设规则对至少一个AM进行筛选实际上按照预设规则对至少一个AM发送的资源调度请求进行筛选,也即是,同一AM发送不同的资源调度请求时,对应的优先级不同,示例地,在不同的调度周期内,AM可以向RM发送不同的资源调度请求,那么,在不同的调度周期内,该AM对应的优先级可以不同,本发明实施例在此不再赘述。
步骤303、判断筛选出的AM的资源调度请求是否为成组资源调度请求。若筛选出的AM的资源调度请求是成组资源调度请求,则执行步骤304;若筛选出的AM的资源调度请求不是成组资源调度请求,则执行步骤308。
RM筛选出AM后,可以判断筛选出的AM的资源调度请求是否为成组资源调度请求。其中,成组资源调度请求指的是AM请求RM一次为其分配多个资源的资源调度请求。
示例地,请参考图3-2,其示出了图3-1所示实施例提供的一种判断筛选出的AM的资源调度请求是否为成组资源调度请求的方法流程图,参见图3-2,该方法可以包括:
子步骤3031、判断筛选出的AM的资源调度请求是否为通过成组资源申请接口发送的资源调度请求。若筛选出的AM的资源调度请求是通过成组资源申请接口发送的资源调度请求,则执行子步骤3032;若筛选出的AM的资源调度请求不是通过成组资源申请接口发送的资源调度请求,则执行子步骤3033。
在本发明实施例中,RM设置有成组资源申请接口,AM可以通过该成组资源申请接口来向RM发送成组资源调度请求,RM也可以通过该成组资源申请接口接收AM发送的资源调度请求,因此,RM可以通过判断筛选出AM的资源调度请求是否是通过成组资源申请接口发送的资源调度请求,来判断筛选出的AM的资源调度请求是成组资源调度请求。示例地,RM-01判断AM-0311的资源调度请求是否为通过成组资源申请接口发送的资源调度请求。
子步骤3032、确定筛选出的AM的资源调度请求是成组资源调度请求。
若在子步骤3031中,RM确定筛选出的AM的资源调度请求是通过成组资源申请接口发送的资源调度请求,则RM确定筛选出的AM的资源调度请求是成组资源调度请求。示例地,当AM-0311的资源调度请求是通过成组资源申请接口发送的资源调度请求时,RM确定AM-0311的资源调度请求是成组资源调度请求。本发明实施例以AM-0311的资源调度请求是通过成组资源申请接口发送的资源调度请求为例进行说明。
子步骤3033、确定筛选出的AM的资源调度请求不是成组资源调度请求。
若在子步骤3031中,RM确定筛选出的AM的资源调度请求不是通过成组资源申请接口发送的资源调度请求,则RM确定筛选出的AM的资源调度请求不是成组资源调度请求。示例地,当AM-0311的资源调度请求不是通过成组资源申请接口发送的资源调度请求时,RM确定AM-0311的资源调度请求不是成组资源调度请求。
步骤304、将筛选出的AM确定为目标AM。执行步骤305。
若在步骤303中,RM确定筛选出的AM的资源调度请求是成组资源调度请求,则RM将筛选出的AM确定为目标AM。示例地,RM将AM-0311确定为目标AM。
步骤305、获取目标AM的资源调度请求,目标AM的资源调度请求携带目标AM所请求资源的目标数量。执行步骤306。
确定目标AM后,RM可以获取目标AM的资源调度请求。其中,目标AM的资源调度请求携带目标AM所请求资源的目标数量。可选地,RM可以在自身记录或者存储的资源调度请求中读取目标AM的资源调度请求。
示例地,RM读取AM-0311的资源调度请求,该AM-0311的资源调度请求携带的目标数量可以为8个。
步骤306、根据目标AM的资源调度请求,获取RM所管理的所有节点上当前时刻处于空闲状态的空闲资源的数量。执行步骤307。
获取目标AM的资源调度请求后,RM可以根据目标AM的资源调度请求,获取RM所管理的所有节点上当前时刻处于空闲状态的空闲资源的数量。可选地,RM可以遍历RM所管理的所有节点,来获取RM所管理的所有节点上的空闲资源的数量。
示例地,以图1所示实施环境中的RM-01、节点021、节点022和节点023为例进行说明,则RM-01获取节点021上的空闲资源的数量、节点022上的空闲资源的数量和节点023上的空闲资源的数量。
以图1所示实施环境为例,请参考图3-3,其示出了图3-1所示实施例提供的一种AM-0311所请求资源的目标数量、节点021的资源使用情况、节点022的资源使用情况和节点023的资源使用情况的示意图,参见图3-3,AM-0311所请求资源的目标数量为8个,节点021、节点022和节点023中的每个节点上的资源总数量都为16个,其中,节点021上繁忙资源的数量为2个,空闲资源的数量为14个,节点022上繁忙资源的数量为5个,空闲资源的数量为11个,节点023上繁忙资源的数量为0个,空闲资源的数量为16个,繁忙资源指的是被占用的资源。在如图3-3所示的示意图中,RM-01获取RM-01所管理的所有节点上的空闲资源(节点021、节点022和节点023上的空闲资源)的数量为:14+11+16=41个。
以图1所示实施环境为例,请参考图3-4,其示出了图3-1所示实施例提供的另一种AM-0311所请求资源的目标数量、节点021的资源使用情况、节点022的资源使用情况和节点023的资源使用情况的示意图,参见图3-4,AM-0311所请求资源的目标数量为8个,节点021、节点022和节点023中的每个节点上的资源的总数量都为16个,其中,节点021上繁忙资源的数量为15个,空闲资源的数量为1个,节点022上繁忙资源的数量为14个,空闲资源的数量为2个,节点023上繁忙资源的数量为16个,空闲资源的数量为0个。在如图3-4所示的示意图中,RM-01获取RM-01所管理的所有节点上的空闲资源(节点021、节点022和节点023上的空闲资源)的数量为:1+2+0=3个。
步骤307、根据空闲资源的数量,为目标AM分配目标数量个资源。
RM获取RM所管理的所有节点上的空闲资源的数量后,可以根据空闲资源的数量,为目标AM分配目标数量个资源。需要说明的是,RM为目标AM分配目标资源时,可以遵循相关技术中RM的capacity原则和Fair原则,本发明实施例在此不再赘述。
示例地,RM-01根据节点021、节点022和节点023上的空闲资源的数量,为AM-0311分配8个资源。请参考图3-5,其示出了图3-1所示实施例提供的一种根据空闲资源的数量为目标AM分配目标数量个资源的方法流程图,参见图3-5,该方法可以包括:
子步骤3071、判断空闲资源的数量是否小于目标数量。若空闲资源的数量不小于目标数量,则执行子步骤3072;若空闲资源的数量小于目标数量,则执行子步骤3073。
RM可以判断空闲资源的数量是否小于目标数量。可选地,RM可以通过将空闲资源的数量与目标数量进行比较来判断空闲资源的数量是否小于目标数量。示例地,当AM-0311所请求资源的目标数量、节点021的资源使用情况、节点022的资源使用情况和节点023的资源使用情况如图3-3所示时,RM判断41是否小于8;当AM-0311所请求资源的目标数量、节点021的资源使用情况、节点022的资源使用情况和节点023的资源使用情况如图3-4所示时,RM-01判断3是否小于8。
子步骤3072、在空闲资源中为目标AM分配目标数量个资源。
若在子步骤3071中RM确定空闲资源的数量不小于目标数量,则RM在空闲资源中为目标AM分配目标数量个资源。可选地,RM可以通过向目标AM发送空闲资源所在节点的节点信息(比如节点标识等)实现对资源的分配。其中,RM可以在一个节点上的空闲资源中为目标AM分配目标数量个资源,也可以在多个节点上的空闲资源中为目标AM分配目标数量个资源,RM在该多个节点上的空闲资源为目标AM分配的资源的总和等于目标数量,本发明实施例对此不作限定。
示例地,当AM-0311所请求资源的目标数量、节点021的资源使用情况、节点022的资源使用情况和节点023的资源使用情况如图3-3所示时,由于41不小于8,因此,RM-01在41个空闲资源中为AM-0311分配8个资源。可选地,RM-01可以在节点021、节点022和节点023中的任意一个节点上为AM-0311分配8个资源,比如,RM-01在节点021上为AM-0311分配8个资源,RM-01还可以在节点021、节点022和节点023中的多个节点上为AM-0311分配8个资源,比如,RM-01在节点021上为AM-0311分配4个资源,在节点022上为AM-0311分配4个资源,或者,RM-01在节点021上为AM-0311分配2个资源,在节点022上为AM-0311分配3个资源,在节点023上为AM-0311分配3个资源。
子步骤3073、预估为目标AM分配目标数量个资源的分配时长。执行子步骤3074。
若在子步骤3071中RM确定空闲资源的数量小于目标数量,则RM预估为目标AM分配目标数量个资源的分配时长。
示例地,当AM-0311所请求资源的目标数量、节点021的资源使用情况、节点022的资源使用情况和节点023的资源使用情况如图3-4所示时,由于3小于8,因此,RM-01预估为AM-0311分配8个资源的分配时长。
请参考图3-6,其示出了图3-1所示实施例提供的一种预估为目标AM分配目标数量个资源的分配时长的方法流程图,参见图3-6,该方法可以包括:
子步骤30731、获取由RM所管理的节点所构成的集群的资源释放率。
RM可以获取由RM所管理的节点所构成的集群的资源释放率。示例地,RM-01获取由节点021、节点022和节点023所构成的集群的资源释放率。
请参考图3-7,其示出了图3-1所示实施例提供的一种获取由RM所管理的节点所构成的集群的资源释放率的方法流程图,参见图3-7,该方法可以包括:
子步骤307311、统计第二时刻与预估分配时长的时刻之间的时间段内集群的资源释放总量,第二时刻位于预估分配时长的时刻之前,且预估分配时长的时刻与第二时刻之间的时间差等于第二预设时长。
每个应用程序在执行完任务后,可以对其在运行任务的过程中占用的资源进行释放,以便于其他应用程序能够使用该资源,每个节点的NM会定时向RM发送心跳包,该心跳包中包含自身所管理的节点的资源使用情况,RM可以根据NM发送的心跳包统计第二时刻与预估分配时长的时刻之间的时间段内集群的资源释放总量,其中,第二时刻位于预估分配时长的时刻之前,且预估分配时长的时刻与第二时刻之间的时间差等于第二预设时长。第二预设时长的具体取值可以根据实际情况设置,可选地,第二预设时长为5分钟,本发明实施例对此不作限定。
以图1所示实施环境为例,假设预估分配时长的时刻为2016年7月21日20点0分0秒,第二预设时长为5分钟,则RM-01可以确定第二时刻为2016年7月21日19点55分0秒,因此,RM-01统计2016年7月21日19点55分0秒与2016年7月21日20点0分0秒之间的这5分钟内,由节点021、节点022和节点023所构成的集群的资源释放总量,也即是,RM-01统计2016年7月21日19点55分0秒与2016年7月21日20点0分0秒之间的这5分钟内节点021、节点022和节点023释放的资源的总和。可选地,该由节点021、节点022和节点023所构成的集群的资源释放总量可以为10个。
子步骤307312、将资源释放总量与第二预设时长的比值,作为资源释放率。
统计第二时刻与预估分配时长的时刻之间的时间段内资源释放总量之后,RM可以将资源释放总量与第二预设时长的比值作为资源释放率。可选地,RM可以先计算出资源释放总量与第二预设时长的比值,然后将资源释放总量与第二预设时长的比值,作为资源释放率,该资源释放率可以采用字母R表示。
示例地,RM-01计算资源释放总量10个与第二预设时长5分钟的比值,并将资源释放总量10个与第二预设时长5分钟的比值作为资源释放率,则资源释放率R=10个/5分钟=2个每分钟。
子步骤30732、获取由RM所管理的节点所构成的集群的繁忙程度。
RM可以获取由RM所管理的节点所构成的集群的繁忙程度。可选地,RM可以统计由RM所管理的节点所构成的集群的历史调度数据,然后根据集群的历史调度数据计算集群的繁忙程度,该繁忙程度可以采用字母K表示,集群的历史调度数据可以包括集群的历史资源利用率a、历史应用提交数量b和历史吞吐量c,历史资源利用率a可以为过去的N天中集群的资源利用率,历史应用提交数量b可以为过去的N天中集群中的所有应用程序请求资源的总数量,历史吞吐量c可以为过去的N天中集群的吞吐量,该繁忙程度K与集群的历史资源利用率a、历史应用提交数量b和历史吞吐量c的关系可以为K=f(a,b,c),也即是,集群的繁忙程度K是一个以集群的历史资源利用率a、历史应用提交数量b和历史吞吐量c为变量的函数,RM可以根据该函数K=f(a,b,c)计算集群的繁忙程度。
示例地,RM-01统计由节点021、节点022和节点023所构成的集群的历史调度数据,然后根据该历史调度数据和K=f(a,b,c)计算得到由节点021、节点022和节点023所构成的集群的繁忙程度K,示例地,K=1.5。
子步骤30733、根据空闲资源的数量、目标数量、资源释放率和繁忙程度,采用分配时长计算公式计算分配时长。
RM获取集群的资源释放率和繁忙程度后,可以根据空闲资源的数量、目标数量、资源释放率和繁忙程度,采用分配时长计算公式计算分配时长,其中,分配时长计算公式为:T=K*(B-C)/R,T表示分配时长,K表示繁忙程度,B表示目标数量,C表示空闲资源的数量,R表示资源释放率。
示例地,C=3个、B=8个、R=2个每分钟、K=1.5,因此,将C=3个、B=8个、R=2个每分钟、K=1.5代入分配时长计算公式T=K*(B-C)/R,可以确定分配时长T=1.5*(8-3)/2=3.75分钟。
子步骤3074、判断分配时长是否大于分配时长阈值。若分配时长不大于分配时长阈值,则执行子步骤3075;若分配时长大于分配时长阈值,则执行子步骤3077。
RM预估为目标AM分配目标数量个资源的分配时长T后,可以判断该分配时长T是否大于分配时长阈值,分配时长阈值可以为Tmx,该分配时长阈值Tmax的具体取值可以根据实际情况设置,示例地,Tmx=10分钟。
可选地,RM可以通过将分配时长T与分配时长阈值Tmax进行比较来判断分配时长T是否大于分配时长阈值Tmax。示例地,在本发明实施例中,T=3.75分钟,Tmax=10分钟,因此,分配时长不大于分配时长阈值。
子步骤3075、为目标AM预留空闲资源,并在RM所管理的任一节点释放资源时,为目标AM预留释放资源。执行子步骤3076。
若在子步骤3074中RM确定分配时长不大于分配时长阈值,则RM为目标AM预留空闲资源,并在RM所管理的任一节点释放资源时,为目标AM预留释放资源。在本发明实施例中,由于分配时长T不大于分配时长阈值Tmx,因此,RM为目标AM预留空闲资源,并在RM所管理的任一节点释放资源时,为目标AM预留释放资源。
RM为目标AM预留空闲资源之后,本次调度周期(第一调度周期)结束。RM继续执行上述步骤301、步骤302、步骤306以及步骤307。具体地,集群中的任何AM在其管理的应用程序需要运行任务时,都会向RM发送资源调度请求,RM继续接收AM发送的资源调度请求,RM所管理的节点的NM会定时向RM发送心跳包,RM在接收到第二NM发送的心跳包时,RM开始第二调度周期(位于第一调度周期之后且与第一调度周期相邻的调度周期),按照预设规则对接收到的资源调度请求(包括第一调度周期内接收到的资源调度请求和第二调度周期内接收到的资源调度请求)对应的至少一个AM进行筛选,该第二NM为管理第二节点的NM,第二节点为RM所管理的节点中的任一节点,由于在第一调度周期中,RM只为目标AM预留了空闲资源,并没有将空闲资源分配给目标AM,因此,该目标AM的优先级并没有降低,RM在第二调度周期内RM对至少一个AM进行筛选时,筛选得到的依然是第一调度周期筛选出的目标AM,因此,RM可以继续获取所有节点上的释放资源的数量并为目标AM预留该释放资源,其中,释放资源的数量等于第二调度周期内获取的空闲资源的数量与第一调度周期内获取的空闲资源的数量之差。
示例地,如图3-4所示,在第一调度周期内RM-01将节点021上的1个空闲资源和节点022上的2个空闲资源都预留给AM-0311。进入第二调度周期后,RM筛选出的AM依然是AM-0311,请参考图3-8,其示出了第二调度周期内AM-0311所请求资源的目标数量、节点021的资源使用情况、节点022的资源使用情况和节点023的资源使用情况的示意图,参见图3-8,在图3-4基础上,在第二周期内,节点022释放了2个资源,因此,RM-01将节点022释放的两个释放资源预留给AM-0311,此时,RM-01一共为AM-0311预留了5个资源。
需要说明的是,当第二调度周期结束后,若RM为目标AM预留的资源的总数量小于目标数量,则进入第三调度周期后,RM继续为目标AM预留资源,预留过程可以参考上述描述,在此不再赘述。
子步骤3076、根据分配时长阈值以及为目标AM预留的资源的数量,为目标AM分配目标数量个资源。
RM为目标AM预留资源之后,可以根据分配时长阈值Tmax以及为目标AM预留的资源的数量,为目标AM分配目标数量个资源。请参考图3-9,其示出了图3-1所示实施例提供的一种根据分配时长阈值以及为目标AM预留的资源的数量为目标AM分配目标数量个资源的方法流程图,参见图3-9,该方法可以包括:
子步骤30761、在从为目标AM预留资源的时刻开始的第一预设时长内,当为目标AM预留的资源的数量等于目标数量时,为目标AM分配目标数量个资源,目标数量个资源包括空闲资源和为目标AM预留的释放资源,第一预设时长为分配时长阈值所对应的时长。
具体地,在从为目标AM预留资源的时刻开始的第一预设时长内,当RM为目标AM预留的资源的数量等于目标数量时,RM为目标AM分配目标数量个资源。
以图1所示实施环境为例,假设RM-01为AM-0311预留资源的时刻为2016年7月21日20点1分0秒,则在从2016年7月21日20点1分0秒开始的10分钟内,当RM-01为AM-0311预留的资源的数量等于8时,RM-01为AM-0311分配8个资源,该8个资源包括图3-4所示的3个空闲资源和第一调度周期之后的调度周期内节点021、节点022和节点023释放的资源。假设RM-01在2016年7月21日20点1分0秒之后的第4分钟时,为AM-0311预留的资源的数量等于8,则RM-01在2016年7月21日20点1分0秒之后的第4分钟为AM-0311分配8个资源。
子步骤30762、在从为目标AM预留资源的时刻开始至第一预设时长结束时,当为目标AM预留的资源的数量不小于目标数量时,在为目标AM预留的资源中为目标AM分配目标数量个资源。
具体地,在从为目标AM预留资源的时刻开始的第一预设时长结束时,当RM为目标AM预留的资源的数量不小于目标数量时,RM在为目标AM预留的资源中为目标AM分配目标数量个资源。
以图1所示实施环境为例,假设RM-01为AM-0311预留资源的时刻为2016年7月21日20点1分0秒,则在从2016年7月21日20点1分0秒开始的第10分钟结束时,当RM-01为AM-0311预留的资源的数量不小于8时,RM-01在为AM-0311预留的资源中为AM-0311分配8个资源,示例地,假设RM-01在2016年7月21日20点1分0秒之后的第10分钟结束时,RM-01为AM-0311预留的资源的数量等于10(不小于8),则RM-01在2016年7月21日20点1分0秒之后的第10分钟结束时在为AM-0311预留的资源中为AM-0311分配8个资源。
子步骤30763、在从为目标AM预留资源的时刻开始至第一预设时长结束时,当为目标AM预留的资源的数量小于目标数量时,释放为目标AM预留的资源。
具体地,在从为目标AM预留资源的时刻开始的第一预设时长结束时,当RM为目标AM预留的资源的数量小于目标数量时,RM释放为目标AM预留的资源。
以图1所示实施环境为例,假设RM-01为AM-0311预留资源的时刻为2016年7月21日20点1分0秒,则在从2016年7月21日20点1分0秒开始的10分钟结束时,当RM-01为AM-0311预留的资源的数量小于8时,RM-01释放为AM-0311预留的资源,示例地,假设RM-01在2016年7月21日20点1分0秒之后的第10分钟结束时,RM-01为AM-0311预留的资源的数量等于6(小于8),则RM-01释放为AM-0311预留的6个资源。
本发明实施例中,当集群中的其他AM所管理的应用程序突然需要运行紧急任务时,若RM长时间为目标AM预留资源,会导致具有紧急任务的应用程序无法及时运行自身的任务,因此,本发明实施例通过在从为目标AM预留资源的时刻开始至第一预设时长结束时,当为目标AM预留的资源的数量小于目标数量时,释放为目标AM预留的资源,可以使具有紧急任务的应用程序能够及时运行自身的任务。
子步骤3077、不为目标AM预留资源。
若在子步骤3074中RM确定分配时长T大于分配时长阈值Tmax,则RM不为目标AM预留资源。这样可以避免由于长时间为目标AM预留资源导致其他应用无法使用该资源。
步骤308、为筛选出的AM分配一个资源。
若在步骤303中,RM确定筛选出的AM的资源调度请求不是成组资源调度请求,则RM为筛选出的AM分配一个资源,该过程的具体实现方式可以参考相关技术,本发明实施例在此不再赘述。
需要说明的是,本发明实施例提供的资源管理方法可以用于Hadoop 2.0的YRAN系统,YRAN系统的核心是RM,而RM的核心是RS。因此RS就是YARN的大脑,负责集群资源的管理和调度,本发明实施例提供的资源管理方法实际上可以由RS来执行,在此不再赘述。
综上所述,本发明实施例提供的资源管理方法,通过获取目标AM的资源调度请求,目标AM的资源调度请求携带目标AM所请求资源的目标数量;根据目标AM的资源调度请求,获取RM所管理的所有节点上当前时刻处于空闲状态的空闲资源的数量;根据空闲资源的数量,为目标AM分配目标数量个资源。由于获取了RM所管理的所有节点上的空闲资源的数量,并根据空闲资源的数量,为目标AM分配目标数量个资源,因此,无需AM对资源进行囤积,解决了相关技术中集群资源的利用率较低的问题,达到了提高集群资源的利用率的效果。
本发明实施例提供的资源管理方法,RM可以一次性为目标AM分配目标数量个资源,可以缩短RM为目标AM分配资源的时间,提高资源分配速率,且目标AM所管理的应用程序在运行完任务后,可以对资源进行及时释放,使其他AM也能够使用该资源,因此,可以避免集群资源死锁。
本发明实施例提供的资源管理方法,通过在RM上设置成组资源申请接口,使得RM能够识别成组资源调度请求,并完成成组资源的调度。AM无需再囤积资源,且RM可以有效控制成组资源的分配和回收。
大数据技术目前已成为学术界和产业界的研究热点,Google(中文:谷歌)公司提出的GFS(英文:Google File System;中文:谷歌文件系统)、MapReduce(一种分布式数据存储系统)、BigTable(一种分布式数据存储系统)等技术成为了大数据技术发展的重要基础,而Apache(中文:阿帕奇)软件基金会基于这些技术推出的开源项目Hadoop(中文:海杜普)成为大数据技术发展和应用的标志性成果,许多互联网公司的大数据平台都是以Hadoop为主。互联网公司如Yahoo(中文雅虎)、IBM(英文:InternationalBusinessMachinesCorporation;中文:国际商业机器公司)、百度、Facebook(中文:脸书)等。
随着分布式系统集群的规模和其工作负荷的增长,特别是支持其他实时计算框架的需求越来越多,包括内存计算框架(英文:Spark)、流式计算框架(英文:Storm)、迭代式计算框架(英文:iMapReduce)等新型计算框架的出现,Hadoop 2.0提出一种新的资源管理系统YARN,一个多种计算框架通用的资源调度体系,为不同的并行化计算提供资源分配服务。这样,YARN支持的计算框架只要实现YARN定义的接口,便可以运行在YARN之上,从而很好地打造一个以YARN为核心的生态系统。由于YARN具有灵活且支持多计算框架的架构设计、主结点功能的分离、资源调度机制的改进、资源的隔离和Hadoop原生支持等诸多特性,它目前已经成了新一代资源管理的典型代表,许多互联网公司,如阿里的云梯集群、腾讯的Gaia(中文:盖亚高达)平台等就是基于YARN建立的大数据平台。
目前YARN的所有应用程序的任务运行在集群中的节点的JVM的Container中。因此所有AM可以根据各自所管理的应用程序的业务需求,向RM(实际上是向位于RM内的RS)请求多个Container,AM可以在请求中指定所需Container的规格,优先级,节点信息,标签等信息以满足其任务需求。RM接收到各个AM的请求后,根据集群资源情况,按照一定的调度策略分配给每个AM一个Container。YARN作为一个多种计算框架通用的资源调度体系,成组资源申请的调度场景伴随着各种应用程序而生,其中,成组资源申请就是AM一次申请一组资源(包括多个资源),AM需要获取全部该组资源后才能开始启动计算任务,即All-or-Nothing(中文:全或无)。比如Storm的Topolopy(中文:拓扑结构)的运行、Machine Learning(中文:机器学习)的Griaph(中文:图表)等应用程序都是这种资源请求类型。因此对于YARN来说,需要支持该种场景,并且还要保证RM的调度效果,及避免资源死锁等问题。
本发明实施例提供的资源管理方法可以很好的实现成组资源调度,避免集群资源死锁。
请参考图4,其示出了本发明实施例提供的一种资源管理装置400的框图。该资源管理装置400可以通过软件、硬件或者两者的结合实现成为图1所示系统中RM-01的部分或者全部,可以用于执行图2或图3-1所示实施例提供的资源管理方法。参见图4,该资源管理装置400可以包括:
第一获取模块401,用于获取目标应用程序管理器AM的资源调度请求,目标AM的资源调度请求携带目标AM所请求资源的目标数量。
第二获取模块402,用于根据目标AM的资源调度请求,获取资源管理器RM所管理的所有节点上当前时刻处于空闲状态的空闲资源的数量。
分配模块403,用于根据空闲资源的数量,为目标AM分配目标数量个资源。
综上所述,本发明实施例提供的资源管理装置,通过获取目标AM的资源调度请求,目标AM的资源调度请求携带目标AM所请求资源的目标数量;根据目标AM的资源调度请求,获取RM所管理的所有节点上当前时刻处于空闲状态的空闲资源的数量;根据空闲资源的数量,为目标AM分配目标数量个资源。由于获取了RM所管理的所有节点上的空闲资源的数量,并根据空闲资源的数量,为目标AM分配目标数量个资源,因此,无需AM对资源进行囤积,解决了相关技术中集群资源的利用率较低的问题,达到了提高集群资源的利用率的效果。
请参考图5-1,其示出了本发明实施例提供的另一种资源管理装置500的框图。该资源管理装置500可以通过软件、硬件或者两者的结合实现成为图1所示系统中RM-01的部分或者全部,可以用于执行图2或图3-1所示实施例提供的资源管理方法。参见图5-1,该资源管理装置500可以包括:
第一获取模块501,用于获取目标应用程序管理器AM的资源调度请求,目标AM的资源调度请求携带目标AM所请求资源的目标数量;
第二获取模块502,用于根据目标AM的资源调度请求,获取资源管理器RM所管理的所有节点上当前时刻处于空闲状态的空闲资源的数量;
分配模块503,用于根据空闲资源的数量,为目标AM分配目标数量个资源。
可选地,请参考图5-2,其示出了图5-1所示实施例提供的一种分配模块503的框图,参见图5-2,该分配模块503可以包括:
第一判断单元5031,用于判断空闲资源的数量是否小于目标数量;
第一分配单元5032,用于在空闲资源的数量不小于目标数量时,在空闲资源中为目标AM分配目标数量个资源。
进一步地,请继续参考图5-2,该分配模块503还可以包括:
预估单元5033,用于在空闲资源的数量小于目标数量时,预估为目标AM分配目标数量个资源的分配时长;
第二判断单元5034,用于判断分配时长是否大于分配时长阈值;
预留单元5035,用于在分配时长不大于分配时长阈值时,为目标AM预留空闲资源,并在RM所管理的任一节点释放资源时,为目标AM预留释放资源;
第二分配单元5036,用于根据分配时长阈值以及为目标AM预留的资源的数量,为目标AM分配目标数量个资源。
可选地,该第二分配单元5036,用于:
在从为目标AM预留资源的时刻开始的第一预设时长内,当为目标AM预留的资源的数量等于目标数量时,为目标AM分配目标数量个资源,目标数量个资源包括空闲资源和为目标AM预留的释放资源,第一预设时长为分配时长阈值所对应的时长;
在从为目标AM预留资源的时刻开始至第一预设时长结束时,当为目标AM预留的资源的数量不小于目标数量时,在为目标AM预留的资源中为目标AM分配目标数量个资源。
可选地,请继续参考图5-1,该资源管理装置500还包括:
释放模块504,用于在从为目标AM预留资源的时刻开始至第一预设时长结束时,当为目标AM预留的资源的数量小于目标数量时,释放为目标AM预留的资源。
可选地,请参考图5-3,其示出了图5-1所示实施例提供的一种预估单元5033的框图,参见图5-3,该预估单元5033可以包括:
第一获取子单元50331,用于获取由RM所管理的节点所构成的集群的资源释放率;
第二获取子单元50332,用于获取由RM所管理的节点所构成的集群的繁忙程度;
计算子单元50333,用于根据空闲资源的数量、目标数量、资源释放率和繁忙程度,采用分配时长计算公式计算分配时长;
其中,分配时长计算公式为:T=K*(B-C)/R,T表示分配时长,K表示繁忙程度,B表示目标数量,C表示空闲资源的数量,R表示资源释放率。
可选地,第一获取子单元50331,用于:
统计第二时刻与预估分配时长的时刻之间的时间段内集群的资源释放总量,第二时刻位于预估分配时长的时刻之前,且预估分配时长的时刻与第二时刻之间的时间差等于第二预设时长;
将资源释放总量与第二预设时长的比值,作为资源释放率。
可选地,请继续参考图5-1,该资源管理装置500还包括:
接收模块505,用于接收至少一个AM发送的资源调度请求;
筛选模块506,用于在接收到第一节点管理器NM发送的心跳包时,按照预设规则对至少一个AM进行筛选,第一NM为管理第一节点的NM,第一节点为RM所管理的节点中的任一节点;
判断模块507,用于判断筛选出的AM的资源调度请求是否为成组资源调度请求;
确定模块508,用于在筛选出的AM的资源调度请求是成组资源调度请求时,将筛选出的AM确定为目标AM。
可选地,判断模块507,用于:
判断筛选出的AM的资源调度请求是否为通过成组资源申请接口发送的资源调度请求;
若筛选出的AM的资源调度请求是通过成组资源申请接口发送的资源调度请求,则确定筛选出的AM的资源调度请求是成组资源调度请求。
综上所述,本发明实施例提供的资源管理装置,通过获取目标AM的资源调度请求,目标AM的资源调度请求携带目标AM所请求资源的目标数量;根据目标AM的资源调度请求,获取RM所管理的所有节点上当前时刻处于空闲状态的空闲资源的数量;根据空闲资源的数量,为目标AM分配目标数量个资源。由于获取了RM所管理的所有节点上的空闲资源的数量,并根据空闲资源的数量,为目标AM分配目标数量个资源,因此,无需AM对资源进行囤积,解决了相关技术中集群资源的利用率较低的问题,达到了提高集群资源的利用率的效果。
本发明实施例提供的资源管理装置,RM可以一次性为目标AM分配目标数量个资源,可以缩短RM为目标AM分配资源的时间,提高资源分配速率,且目标AM所管理的应用程序在运行完任务后,可以对资源进行及时释放,使其他AM也能够使用该资源,因此,可以避免集群资源死锁。
本发明实施例提供的资源管理装置,通过在RM上设置成组资源申请接口,使得RM能够识别成组资源调度请求,并完成成组资源的调度。AM无需再囤积资源,且RM可以有效控制成组资源的分配和回收。
需要说明的是:上述实施例提供的资源管理装置在管理资源时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的资源管理装置和资源管理方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
请参考图6,其示出了本发明实施例提供的一种资源管理器600的框图。该资源管理器600可以为图1所示实施环境中的RM-01,用于执行图2或图3-1所示实施例提供的资源管理方法。参见图6,该资源管理器600可以包括:处理器610。
处理器610,用于:
获取目标应用程序管理器AM的资源调度请求,目标AM的资源调度请求携带目标AM所请求资源的目标数量;
根据目标AM的资源调度请求,获取资源管理器RM所管理的所有节点上当前时刻处于空闲状态的空闲资源的数量;
根据空闲资源的数量,为目标AM分配目标数量个资源。
可选地,处理器610,用于:
判断空闲资源的数量是否小于目标数量;
若空闲资源的数量不小于目标数量,则在空闲资源中为目标AM分配目标数量个资源。
可选地,处理器610,还用于:
若空闲资源的数量小于目标数量,则预估为目标AM分配目标数量个资源的分配时长;
判断分配时长是否大于分配时长阈值;
若分配时长不大于分配时长阈值,则为目标AM预留空闲资源,并在RM所管理的任一节点释放资源时,为目标AM预留释放资源;
根据分配时长阈值以及为目标AM预留的资源的数量,为目标AM分配目标数量个资源。
可选地,处理器610,还用于:
在从为目标AM预留资源的时刻开始的第一预设时长内,当为目标AM预留的资源的数量等于目标数量时,为目标AM分配目标数量个资源,目标数量个资源包括空闲资源和为目标AM预留的释放资源,第一预设时长为分配时长阈值所对应的时长;
在从为目标AM预留资源的时刻开始至第一预设时长结束时,当为目标AM预留的资源的数量不小于目标数量时,在为目标AM预留的资源中为目标AM分配目标数量个资源。
可选地,处理器610,还用于:
在从为目标AM预留资源的时刻开始至第一预设时长结束时,当为目标AM预留的资源的数量小于目标数量时,释放为目标AM预留的资源。
可选地,处理器610,还用于:
获取由RM所管理的节点所构成的集群的资源释放率;
获取由RM所管理的节点所构成的集群的繁忙程度;
根据空闲资源的数量、目标数量、资源释放率和繁忙程度,采用分配时长计算公式计算分配时长;
其中,分配时长计算公式为:T=K*(B-C)/R,T表示分配时长,K表示繁忙程度,B表示目标数量,C表示空闲资源的数量,R表示资源释放率。
可选地,处理器610,还用于:
统计第二时刻与预估分配时长的时刻之间的时间段内集群的资源释放总量,第二时刻位于预估分配时长的时刻之前,且预估分配时长的时刻与第二时刻之间的时间差等于第二预设时长;
将资源释放总量与第二预设时长的比值,作为资源释放率。
可选地,该资源管理器600还包括:接收机620,接收机620与处理器610耦合,
接收机620,用于接收至少一个AM发送的资源调度请求;
处理器610,用于在接收到第一节点管理器NM发送的心跳包时,按照预设规则对至少一个AM进行筛选,第一NM为管理第一节点的NM,第一节点为RM所管理的节点中的任一节点;
处理器610,用于判断筛选出的AM的资源调度请求是否为成组资源调度请求;
处理器610,用于在筛选出的AM的资源调度请求是成组资源调度请求时,将筛选出的AM确定为目标AM。
可选地,处理器610,用于:
判断筛选出的AM的资源调度请求是否为通过成组资源申请接口发送的资源调度请求;
若筛选出的AM的资源调度请求是通过成组资源申请接口发送的资源调度请求,则确定筛选出的AM的资源调度请求是成组资源调度请求。
综上所述,本发明实施例提供的资源管理器,通过获取目标AM的资源调度请求,目标AM的资源调度请求携带目标AM所请求资源的目标数量;根据目标AM的资源调度请求,获取RM所管理的所有节点上当前时刻处于空闲状态的空闲资源的数量;根据空闲资源的数量,为目标AM分配目标数量个资源。由于获取了RM所管理的所有节点上的空闲资源的数量,并根据空闲资源的数量,为目标AM分配目标数量个资源,因此,无需AM对资源进行囤积,解决了相关技术中集群资源的利用率较低的问题,达到了提高集群资源的利用率的效果。
请参考图7,其示出了本发明实施例提供的一种资源管理系统700的框图。参见图7,该资源管理系统700可以包括:AM-710、NM-720和RM-730;
在一种可实现方式中,RM-730包括图4或图5-1所示的资源管理装置;
在另一种可实现方式中,RM-730为图6所示的资源管理器600。
综上所述,本发明实施例提供的资源管理系统,RM通过获取目标AM的资源调度请求,目标AM的资源调度请求携带目标AM所请求资源的目标数量;根据目标AM的资源调度请求,获取RM所管理的所有节点上当前时刻处于空闲状态的空闲资源的数量;根据空闲资源的数量,为目标AM分配目标数量个资源。由于获取了RM所管理的所有节点上的空闲资源的数量,并根据空闲资源的数量,为目标AM分配目标数量个资源,因此,无需AM对资源进行囤积,解决了相关技术中集群资源的利用率较低的问题,达到了提高集群资源的利用率的效果。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (15)

1.一种资源管理方法,其特征在于,所述方法包括:
获取目标应用程序管理器AM的资源调度请求,所述目标AM的资源调度请求携带所述目标AM所请求资源的目标数量;
根据所述目标AM的资源调度请求,获取资源管理器RM所管理的所有节点上当前时刻处于空闲状态的空闲资源的数量;
判断所述空闲资源的数量是否小于所述目标数量;
若所述空闲资源的数量小于所述目标数量,则预估为所述目标AM分配所述目标数量个资源的分配时长,并判断所述分配时长是否大于分配时长阈值;
若所述分配时长不大于所述分配时长阈值,则为所述目标AM预留所述空闲资源,并在所述RM所管理的任一节点释放资源时,为所述目标AM预留释放资源;
根据所述分配时长阈值以及为所述目标AM预留的资源的数量,为所述目标AM分配所述目标数量个资源,其中,在从为所述目标AM预留资源的时刻开始至第一预设时长结束时,当为所述目标AM预留的资源的数量小于所述目标数量时,释放为所述目标AM预留的资源,所述第一预设时长为所述分配时长阈值所对应的时长。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述空闲资源的数量不小于所述目标数量,则在所述空闲资源中为所述目标AM分配所述目标数量个资源。
3.根据权利要求1所述的方法,其特征在于,
所述根据所述分配时长阈值以及为所述目标AM预留的资源的数量,为所述目标AM分配所述目标数量个资源,包括:
在从为所述目标AM预留资源的时刻开始的所述第一预设时长内,当为所述目标AM预留的资源的数量等于所述目标数量时,为所述目标AM分配所述目标数量个资源,所述目标数量个资源包括所述空闲资源和为所述目标AM预留的释放资源;
在从为所述目标AM预留资源的时刻开始至所述第一预设时长结束时,当为所述目标AM预留的资源的数量不小于所述目标数量时,在为所述目标AM预留的资源中为所述目标AM分配所述目标数量个资源。
4.根据权利要求1所述的方法,其特征在于,所述预估为所述目标AM分配所述目标数量个资源的分配时长,包括:
获取由所述RM所管理的节点所构成的集群的资源释放率;
获取由所述RM所管理的节点所构成的集群的繁忙程度;
根据所述空闲资源的数量、所述目标数量、所述资源释放率和所述繁忙程度,采用分配时长计算公式计算所述分配时长;
其中,所述分配时长计算公式为:T=K*(B–C)/R,T表示所述分配时长,K表示所述繁忙程度,B表示所述目标数量,C表示所述空闲资源的数量,R表示所述资源释放率。
5.根据权利要求4所述的方法,其特征在于,所述获取由所述RM所管理的节点所构成的集群的资源释放率,包括:
统计第二时刻与预估所述分配时长的时刻之间的时间段内所述集群的资源释放总量,所述第二时刻位于所述预估所述分配时长的时刻之前,且所述预估所述分配时长的时刻与所述第二时刻之间的时间差等于第二预设时长;
将所述资源释放总量与所述第二预设时长的比值,作为所述资源释放率。
6.根据权利要求1至5任一所述的方法,其特征在于,在所述获取目标应用程序管理器AM的资源调度请求之前,所述方法还包括:
接收至少一个AM发送的资源调度请求;
在接收到第一节点管理器NM发送的心跳包时,按照预设规则对所述至少一个AM进行筛选,所述第一NM为管理第一节点的NM,所述第一节点为所述RM所管理的节点中的任一节点;
判断筛选出的AM的资源调度请求是否为成组资源调度请求;
若所述筛选出的AM的资源调度请求是所述成组资源调度请求,则将所述筛选出的AM确定为所述目标AM。
7.根据权利要求6所述的方法,其特征在于,所述判断所述筛选出的AM的资源调度请求是否为成组资源调度请求,包括:
判断所述筛选出的AM的资源调度请求是否为通过成组资源申请接口发送的资源调度请求;
若所述筛选出的AM的资源调度请求是通过所述成组资源申请接口发送的资源调度请求,则确定所述筛选出的AM的资源调度请求是所述成组资源调度请求。
8.一种资源管理装置,其特征在于,所述装置包括:
第一获取模块,用于获取目标应用程序管理器AM的资源调度请求,所述目标AM的资源调度请求携带所述目标AM所请求资源的目标数量;
第二获取模块,用于根据所述目标AM的资源调度请求,获取资源管理器RM所管理的所有节点上当前时刻处于空闲状态的空闲资源的数量;
分配模块,包括第一判断单元、预估单元、第二判断单元、预留单元和第二分配单元,其中,
所述第一判断单元,用于判断所述空闲资源的数量是否小于所述目标数量;
所述预估单元,用于在所述空闲资源的数量小于所述目标数量时,预估为所述目标AM分配所述目标数量个资源的分配时长,
所述第二判断单元,用于判断所述分配时长是否大于分配时长阈值,
所述预留单元,用于在所述分配时长不大于所述分配时长阈值时,为所述目标AM预留所述空闲资源,并在所述RM所管理的任一节点释放资源时,为所述目标AM预留释放资源,
所述第二分配单元,用于根据所述分配时长阈值以及为所述目标AM预留的资源的数量,为所述目标AM分配所述目标数量个资源;
释放模块,用于在从为所述目标AM预留资源的时刻开始至第一预设时长结束时,当为所述目标AM预留的资源的数量小于所述目标数量时,释放为所述目标AM预留的资源,所述第一预设时长为所述分配时长阈值所对应的时长。
9.根据权利要求8所述的装置,其特征在于,所述分配模块,还包括:
第一分配单元,用于在所述空闲资源的数量不小于所述目标数量时,在所述空闲资源中为所述目标AM分配所述目标数量个资源。
10.根据权利要求8所述的装置,其特征在于,所述第二分配单元,用于:
在从为所述目标AM预留资源的时刻开始的第一预设时长内,当为所述目标AM预留的资源的数量等于所述目标数量时,为所述目标AM分配所述目标数量个资源,所述目标数量个资源包括所述空闲资源和为所述目标AM预留的释放资源,所述第一预设时长为所述分配时长阈值所对应的时长;
在从为所述目标AM预留资源的时刻开始至所述第一预设时长结束时,当为所述目标AM预留的资源的数量不小于所述目标数量时,在为所述目标AM预留的资源中为所述目标AM分配所述目标数量个资源。
11.根据权利要求8所述的装置,其特征在于,所述预估单元,包括:
第一获取子单元,用于获取由所述RM所管理的节点所构成的集群的资源释放率;
第二获取子单元,用于获取由所述RM所管理的节点所构成的集群的繁忙程度;
计算子单元,用于根据所述空闲资源的数量、所述目标数量、所述资源释放率和所述繁忙程度,采用分配时长计算公式计算所述分配时长;
其中,所述分配时长计算公式为:T=K*(B–C)/R,T表示所述分配时长,K表示所述繁忙程度,B表示所述目标数量,C表示所述空闲资源的数量,R表示所述资源释放率。
12.根据权利要求11所述的装置,其特征在于,
所述第一获取子单元,用于:
统计第二时刻与预估所述分配时长的时刻之间的时间段内所述集群的资源释放总量,所述第二时刻位于所述预估所述分配时长的时刻之前,且所述预估所述分配时长的时刻与所述第二时刻之间的时间差等于第二预设时长;
将所述资源释放总量与所述第二预设时长的比值,作为所述资源释放率。
13.根据权利要求8至12任一所述的装置,其特征在于,所述装置还包括:
接收模块,用于接收至少一个AM发送的资源调度请求;
筛选模块,用于在接收到第一节点管理器NM发送的心跳包时,按照预设规则对所述至少一个AM进行筛选,所述第一NM为管理第一节点的NM,所述第一节点为所述RM所管理的节点中的任一节点;
判断模块,用于判断筛选出的AM的资源调度请求是否为成组资源调度请求;
确定模块,用于在所述筛选出的AM的资源调度请求是所述成组资源调度请求时,将所述筛选出的AM确定为所述目标AM。
14.根据权利要求13所述的装置,其特征在于,所述判断模块,用于:
判断所述筛选出的AM的资源调度请求是否为通过成组资源申请接口发送的资源调度请求;
若所述筛选出的AM的资源调度请求是通过所述成组资源申请接口发送的资源调度请求,则确定所述筛选出的AM的资源调度请求是所述成组资源调度请求。
15.一种资源管理系统,其特征在于,所述资源管理系统包括:
应用程序管理器AM、节点管理器NM和资源管理器RM;
所述RM包括权利要求8至14任一所述的资源管理装置。
CN201610605242.2A 2016-07-27 2016-07-27 资源管理方法、装置及系统 Active CN107665143B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610605242.2A CN107665143B (zh) 2016-07-27 2016-07-27 资源管理方法、装置及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610605242.2A CN107665143B (zh) 2016-07-27 2016-07-27 资源管理方法、装置及系统

Publications (2)

Publication Number Publication Date
CN107665143A CN107665143A (zh) 2018-02-06
CN107665143B true CN107665143B (zh) 2020-10-16

Family

ID=61115227

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610605242.2A Active CN107665143B (zh) 2016-07-27 2016-07-27 资源管理方法、装置及系统

Country Status (1)

Country Link
CN (1) CN107665143B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108897626A (zh) * 2018-07-20 2018-11-27 浪潮电子信息产业股份有限公司 一种资源调度方法及服务器
CN112997155B (zh) * 2018-11-22 2023-10-13 深圳市欢太科技有限公司 音频播放处理方法、装置、终端和计算机可读存储介质
CN110597634B (zh) * 2019-09-12 2021-05-07 腾讯科技(深圳)有限公司 一种数据处理方法、装置及计算机可读存储介质
CN114003351A (zh) * 2020-07-28 2022-02-01 中移(苏州)软件技术有限公司 一种数据处理方法及装置、存储介质
CN112073532B (zh) * 2020-09-15 2022-09-09 北京火山引擎科技有限公司 一种资源分配的方法及装置
CN115756768B (zh) * 2023-01-10 2023-04-28 深圳复临科技有限公司 基于saga的分布式事务处理方法、装置、设备及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104298550A (zh) * 2014-10-09 2015-01-21 南通大学 一种面向Hadoop的动态调度方法
WO2015103925A1 (zh) * 2014-01-13 2015-07-16 华为技术有限公司 资源管理方法及装置
CN105512083A (zh) * 2015-11-30 2016-04-20 华为技术有限公司 基于yarn的资源管理方法、装置及系统
CN105592110A (zh) * 2014-10-20 2016-05-18 中兴通讯股份有限公司 一种资源调度方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015103925A1 (zh) * 2014-01-13 2015-07-16 华为技术有限公司 资源管理方法及装置
CN104298550A (zh) * 2014-10-09 2015-01-21 南通大学 一种面向Hadoop的动态调度方法
CN105592110A (zh) * 2014-10-20 2016-05-18 中兴通讯股份有限公司 一种资源调度方法及装置
CN105512083A (zh) * 2015-11-30 2016-04-20 华为技术有限公司 基于yarn的资源管理方法、装置及系统

Also Published As

Publication number Publication date
CN107665143A (zh) 2018-02-06

Similar Documents

Publication Publication Date Title
CN107665143B (zh) 资源管理方法、装置及系统
US10003500B2 (en) Systems and methods for resource sharing between two resource allocation systems
JP6490913B2 (ja) グリッドコンピューティングシステムの遊休リソースによるタスク実行
CN109471727B (zh) 一种任务处理方法、装置及系统
CN110858161B (zh) 资源分配方法、装置、系统、设备和介质
CN107426274B (zh) 基于时序的业务应用及监控分析调度的方法和系统
CN107018091B (zh) 资源请求的调度方法和装置
US20170031622A1 (en) Methods for allocating storage cluster hardware resources and devices thereof
US11463554B2 (en) Systems and methods for dynamic multi-access edge allocation using artificial intelligence
CN105159775A (zh) 基于负载均衡器的云计算数据中心的管理系统和管理方法
CN106411558B (zh) 一种数据流量限制的方法及系统
CN110971623B (zh) 微服务实例弹性伸缩方法、装置以及存储介质
CN109992418B (zh) Sla感知的多租户大数据平台资源优先级调度方法及系统
WO2017010922A1 (en) Allocation of cloud computing resources
CN110221920B (zh) 部署方法、装置、存储介质及系统
WO2016095535A1 (zh) 资源分配方法、装置和服务器
KR102389334B1 (ko) 클라우드 서비스를 위한 가상 머신 프로비저닝 시스템 및 방법
WO2016041446A1 (zh) 一种资源分配方法、装置及设备
CN103414657A (zh) 一种跨数据中心的资源调度方法、超级调度中心和系统
WO2020185132A1 (en) Method and current edge cloud manager for controlling resources
CN110914805A (zh) 用于分层任务调度的计算系统
CN112073532B (zh) 一种资源分配的方法及装置
CN115617497B (zh) 线程处理方法、调度组件、监测组件、服务器和存储介质
US20170344266A1 (en) Methods for dynamic resource reservation based on classified i/o requests and devices thereof
CN117608760A (zh) 应用于Kubernetes的云上应用混合部署方法

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
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220215

Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province

Patentee after: Huawei Cloud Computing Technologies Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.