CN109144710A - 资源调度方法、装置及计算机可读存储介质 - Google Patents

资源调度方法、装置及计算机可读存储介质 Download PDF

Info

Publication number
CN109144710A
CN109144710A CN201710458058.4A CN201710458058A CN109144710A CN 109144710 A CN109144710 A CN 109144710A CN 201710458058 A CN201710458058 A CN 201710458058A CN 109144710 A CN109144710 A CN 109144710A
Authority
CN
China
Prior art keywords
node
gpu
task
cpu
resource
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
Application number
CN201710458058.4A
Other languages
English (en)
Other versions
CN109144710B (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.)
China Mobile Communications Group Co Ltd
China Mobile Communications Co Ltd
Original Assignee
China Mobile Communications Group Co Ltd
China Mobile Communications 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 China Mobile Communications Group Co Ltd, China Mobile Communications Co Ltd filed Critical China Mobile Communications Group Co Ltd
Priority to CN201710458058.4A priority Critical patent/CN109144710B/zh
Publication of CN109144710A publication Critical patent/CN109144710A/zh
Application granted granted Critical
Publication of CN109144710B publication Critical patent/CN109144710B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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
    • 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/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • 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/5061Partitioning or combining of resources
    • G06F9/5072Grid computing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)
  • Multi Processors (AREA)

Abstract

本发明公开了一种资源调度方法,包括:接收第一任务;利用所述第一任务的描述信息中的标签信息,确定需要请求GPU节点的资源;根据Hadoop集群中各节点的节点标签及第一任务的GPU资源需求,从Hadoop集群中选择出至少一个GPU节点;并将所述第一任务分配到相应的GPU节点中执行;所述节点标签表征对应节点为GPU节点或CPU节点。本发明同时还公开了一种资源调度装置及计算机可读存储介质。

Description

资源调度方法、装置及计算机可读存储介质
技术领域
本发明涉及大数据领域,尤其涉及一种资源调度方法、装置及计算机可读存储介质。
背景技术
一方面,随着大数据时代的到来,用于处理大量数据的分布式计算平台也应运而生。其中,Hadoop作为一种开源的分布式的批处理计算框架而被广泛地使用,且受到越来越多的关注。
随着集群规模的扩大,异构集群也越来越普遍。异构集群中的计算节点有不同的计算能力。在这样的前提下,为了管理集群的资源和作业调度,产生了YARN(Yet AnotherResource Negotiator,另一种资源协调者),作为Hadoop平台上采用的集群资源管理系统,支持中央处理器(CPU,Central Processing Unit)和内存资源的管理调度。
另一方面,图像处理器(GPU,Graphics Processing Unit)由于强大的计算能力,被广泛用于机器学习相关领域,大大加速了模型的训练速度。所以GPU作为一种资源会被使用到Hadoop平台中。然而现有的YARN不支持GPU资源的调度。
基于此,提出了以下两种解决方案:
第一种,直接修改YARN的源码,以扩展YARN的调度功能。由于YARN的源码的复杂性和自身的一些限制,导致方案实现难度大,漏洞(Bug)难以调试,开发周期长,时间成本和开发成本都比较高。
第二种,采用一个独立的GPU资源管理系统,来专门负责GPU资源的管理和调度。然而,这种方式需要独立开发完整的系统,所以开发成本较高,而且增加了运维成本,还会增加整个系统复杂性。
综上所述,目前的方案均存在一定缺陷。
发明内容
为解决现有存在的技术问题,本发明实施例提供一种资源调度方法、装置及计算机可读存储介质。
本发明实施例的技术方案是这样实现的:
本发明实施例提供了一种资源调度方法,包括:
接收第一任务;
利用所述第一任务的描述信息中的标签信息,确定需要请求GPU节点的资源;
根据Hadoop集群中各节点的节点标签及第一任务的GPU资源需求,从Hadoop集群中选择出至少一个GPU节点;并将所述第一任务分配到相应的GPU节点中执行;所述节点标签表征对应节点为GPU节点或CPU节点。
上述方案中,所述将所述第一任务分配到相应的GPU节点中执行,包括:
根据所述第一任务所需的GPU数量、虚拟CPU核数与GPU数量的对应关系,确定GPU节点上所需的虚拟CPU核数;其中,
所述虚拟CPU核为GPU节点上被管理的CPU核的虚拟化,数量与GPU卡数相关。
上述方案中,所述根据Hadoop集群中各节点的节点标签及第一任务的GPU资源需求,从Hadoop集群中选择出至少一个GPU节点,包括:
根据Hadoop集群中各节点的节点标签及各节点上报的空闲资源,从Hadoop集群中选择出至少一个候选GPU节点;
根据所述第一任务的GPU资源需求及至少一个候选GPU节点上报的空闲虚拟CPU核数,从所述至少一个候选GPU节点中选择至少一个执行所述第一任务的GPU节点。
上述方案中,所述虚拟CPU核数与GPU数量的对应关系,为:
虚拟CPU核的数量为GPU的数量的Q倍;Q为大于或等于1的整数。
上述方案中,所述方法还包括:
当利用所述第一任务的描述信息中的标签信息,确定需要请求CPU节点的资源时,根据Hadoop集群中各节点的节点标签及第一任务的CPU资源需求,从Hadoop集群中选择出至少一个CPU节点;并将所述第一任务分配到相应的CPU节点中执行。
上述方案中,所述方法还包括:
进行初始化操作,获得Hadoop集群中各节点的节点标签信息。
本发明实施例还提供了一种资源调度装置,包括:
接收单元,用于接收第一任务;
确定单元,用于利用所述第一任务的描述信息中的标签信息,确定需要请求GPU节点的资源;
分配单元,用于根据Hadoop集群中各节点的节点标签及第一任务的GPU资源需求,从Hadoop集群中选择出至少一个GPU节点;并将所述第一任务分配到相应的GPU节点中执行;所述节点标签表征对应节点为GPU节点或CPU节点。
上述方案中,所述分配单元,具体用于:
根据所述第一任务所需的GPU数量、虚拟CPU核数与GPU数量的对应关系,确定GPU节点上所需的虚拟CPU核数;其中,
所述虚拟CPU核为GPU节点上被管理的CPU核的虚拟化,数量与GPU卡数相关。
上述方案中,所述虚拟CPU核数与GPU数量的对应关系,为:
虚拟CPU核的数量为GPU的数量的Q倍;Q为大于或等于1的整数。
上述方案中,所述确定单元,还用于利用所述第一任务的描述信息中的标签信息,确定需要请求CPU节点的资源;
分配单元,还用于根据Hadoop集群中各节点的节点标签及第一任务的CPU资源需求,从Hadoop集群中选择出至少一个CPU节点;并将所述第一任务分配到相应的CPU节点中执行。
上述方案中,所述装置还包括:
初始化单元,用于进行初始化操作,获得Hadoop集群中各节点的节点标签信息;所述节点标签信息是基于YARN的标签功能生成的。
本发明实施例又提供了一种资源调度装置,包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器,
其中,所述处理器用于运行所述计算机程序时,执行上述方法的步骤。
本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述方法的步骤。
本发明实施例提供的资源调度方法、装置及计算机可读存储介质,接收第一任务;利用所述第一任务的描述信息中的标签信息,确定需要请求GPU节点的资源;根据Hadoop集群中各节点的节点标签及第一任务的GPU资源需求,从Hadoop集群中选择出至少一个GPU节点;并将所述第一任务分配到相应的GPU节点中执行;所述节点标签表征对应节点为GPU节点或CPU节点。本发明实施例中,基于YARN标签技术的GPU资源调度方法,通过利用YARN的标签功能,在不修改YARN源码的情况下,实现GPU资源调度的支持,如此,大大降低了实现难度、缩短了开发周期、还大大降低了开发和运维成本。
附图说明
在附图(其不一定是按比例绘制的)中,相似的附图标记可在不同的视图中描述相似的部件。具有不同字母后缀的相似附图标记可表示相似部件的不同示例。附图以示例而非限制的方式大体示出了本文中所讨论的各个实施例。
图1为本发明实施例资源调度的方法流程示意图;
图2为本发明实施例为带有标签的Hadoop集群结构示意图;
图3为本发明实施例资源调度装置结构示意图;
图4为本发明实施例资源调度装置硬件结构示意图。
具体实施方式
下面结合附图及实施例对本发明再作进一步详细的描述。
在本发明的各种实施例中:接收第一任务;利用所述第一任务的描述信息中的标签信息,确定需要请求GPU节点的资源;根据Hadoop集群中各节点的节点标签及第一任务的GPU资源需求,从Hadoop集群中选择出至少一个GPU节点;并将所述第一任务分配到相应的GPU节点中执行;所述节点标签表征对应节点为GPU节点或CPU节点。本发明实施例中,基于YARN标签技术的GPU资源调度方法,通过利用YARN的标签功能,在不修改YARN源码的情况下,实现GPU资源调度的支持,如此,大大降低了实现难度、缩短了开发周期、还大大降低了开发和运维成本。
本发明实施例提供的资源调度方法,应用于YARN(即资源调度器),如图1所示,包括以下步骤:
步骤101:接收第一任务;
步骤102:利用所述第一任务的描述信息中的标签信息,确定需要请求GPU节点的资源;
这里,由于本发明实施例的方案是基于Hadoop YARN集群的标签功能实现的,所以实际应用时,需要给Hadoop集群中的GPU节点打上GPU标签,并给CPU节点打上CPU标签,如图2所示,从而将Hadoop集群中的GPU节点和CPU节点分开,即区分GPU节点和CPU节点,以便后续YARN能够实现GPU资源的调度和管理。
其中,为了对GPU资源的调度,接收的任务的描述信息中需要有GPU标签,以使YARN能够获知接收的任务需要分配GPU资源。而且,为了实现简单,实际应用时,可以定义:需要GPU资源的计算任务只能请求到GPU节点上的流计算单元资源,需要CPU资源的计算任务只能请求到CPU节点上的CPU计算单元资源。
也就是说,为了实现GPU资源的管理和调度,需要让YARN获得各节点的标签信息。
基于此,在一实施例中,该方法还可以包括:
进行初始化操作,获得Hadoop集群中各节点的节点标签信息。
步骤103:根据Hadoop集群中各节点的节点标签及第一任务的GPU资源需求,从Hadoop集群中选择出至少一个GPU节点;并将所述第一任务分配到相应的GPU节点中执行。
这里,所述节点标签表征对应节点为GPU节点或CPU节点。
其中,为所述第一任务分配GPU资源时,由于YARN并不能够直接区分GPU(以卡为单元)和CPU核,而GPU和CPU核的性能并不是完全相同的,所以需要对二者进行一个换算,以便将第一任务分配到相应的GPU节点中执行。
基于此,所述将所述第一任务分配到相应的GPU节点中执行,包括:
根据所述第一任务所需的GPU数量、虚拟CPU核数与GPU数量的对应关系,确定GPU节点上所需的虚拟CPU核数;其中,
所述虚拟CPU核为GPU节点上被管理的CPU核的虚拟化,数量与GPU卡数相关。
其中,确定执行第一任务的GPY节点时,根据Hadoop集群中各节点的节点标签及各节点上报的空闲资源,从Hadoop集群中选择出至少一个候选GPU节点;
根据所述第一任务的GPU资源需求及至少一个候选GPU节点上报的空闲虚拟CPU核数,从所述至少一个候选GPU节点中选择至少一个执行所述第一任务的GPU节点。
所述虚拟CPU核数与GPU数量的对应关系,为:
虚拟CPU核的数量为GPU的数量的Q倍;Q为大于或等于1的整数。
这里,相应的GPU节点可以根据确定的虚拟CPU核数,为所述第一任务获取本机对应的GPU数量。
举个例子来说,假设GPU节点上有M块GPU,可以根据需要将Q的取值设置1,这样就可以设置成M个CPU虚拟核;其中,M为大于或等于1的整数。这样,YARN管理的该GPU节点上CPU资源数目(CPU核数)和GPU资源的数目(GPU卡数)是一致的,即相同的,此时,被管理的CPU虚拟核数与GPU数量的对应关系,为:GPU节点上被管理的CPU虚拟核的数量和GPU的数量相同。
这样一来,当接收的任务(请求GPU节点的资源)的描述信息中所需的资源是X块GPU时,YARN实际上为该任务分配的是X个虚拟CPU核。相应地,对于存在m个(m是小于或等于M的整数)空闲CPU虚拟核的GPU节点,可以作为备选节点,向YARN申请m个子任务,再由YARN将X个子任务随机或者根据需要分配给对应的备选节点。举个例子来说,假设有N个备选节点,每个节点的空闲CPU虚拟核分别是m1、m2…,mN,当分配给所有备选节点时,则有m1+m2+…+mN=X。当然,也可以根据需要,比如备选节点上报空闲CPU虚拟核的先后顺序以及对应的空闲CPU虚拟核数,分配给至少一个备选节点。
通俗点说,当任务通过YARN获取到该GPU节点的m个CPU虚拟核资源时,实际上是通过GPU节点获取了本机的m块GPU资源。当该计算任务结束释放使用的CPU虚拟核时,也就释放了对应的GPU资源。
当然,实际应用时,也可以根据需要将Q设成其它数值,比如2等。其实现原理与上面描述的类似,这里不再赘述。
本发明实施例提供的方案,能够支持GPU资源的调度,当接收的任务请求的是CPU计算单元资源时,也需要在任务的描述信息中携带CPU标签,以使YARN能够获知需要调度CPU计算单元资源。
基于此,在一实施例中,该方法还可以包括:
当利用所述第一任务的描述信息中的标签信息,确定需要请求CPU节点的资源时,根据Hadoop集群中各节点的节点标签及第一任务的CPU资源需求,从Hadoop集群中选择出至少一个CPU节点;并将所述第一任务分配到相应的CPU节点中执行。
实际应用时,在Hadoop集群中,还可以不给一些节点打标签,这样,当接收的任务的描述信息中没有携带节点标签时,可以从这些未打标签的节点中为接收的任务分配资源。
也就是说,当接收的任务的描述信息中没有携带节点标签时,默认从未打标签的节点中为接收的任务分配资源。
本发明实施例提供的资源调度方法,接收第一任务;利用所述第一任务的描述信息中的标签信息,确定需要请求GPU节点的资源;根据Hadoop集群中各节点的节点标签及第一任务的GPU资源需求,从Hadoop集群中选择出至少一个GPU节点;并将所述第一任务分配到相应的GPU节点中执行;所述节点标签表征对应节点为GPU节点或CPU节点。本发明实施例中,基于YARN标签技术的GPU资源调度方法,通过利用YARN的标签功能,在不修改YARN源码的情况下,实现GPU资源调度的支持,如此,大大降低了实现难度、缩短了开发周期、还大大降低了开发和运维成本。
另外,根据所述第一任务所需的GPU数量、虚拟CPU核数与GPU数量的对应关系,确定GPU节点上所需的虚拟CPU核数;其中,所述虚拟CPU核为GPU节点上被管理的CPU核的虚拟化,数量与GPU卡数相关,通过将CPU资源和GPU资源绑定的方式,实现GPU资源的调度,如此,能够简单、快速地实现GPU资源的调度。
下面结合一个应用实施例对本发明再组进一步详细的描述。
本应用实施例的应用场景是:目前,有很多深度学习类工作需要在基于Hadoop的大数据平台中直接应用深度学习工具,如caffe、Tensorflow等等。
以开源项目TensorFlow on Spark(TFoS)为例来说明。此工具实现了主流深度学习工具Tensorflow的集群分布式工作与管理。但是利用Spark将任务发到Hadoop集群中时,存在无法调度GPU资源的问题。
通过本发明实施例的方案,实现TFoS在Hadoop平台上的完美运行,具体实现步骤如下:
步骤1、开启YARN的标签调度策略;
yarn.node-labels.enabled=true。
步骤2、设置GPU节点的CPU虚拟核(vcore)数,并限定每个任务能使用的vcore数,以保证每个GPU节点可以接受的子任务数等于GPU数;
a)yarn.nodemanager.resource.cpu-vcores=L*A(这里,L是GPU个数,A是整数)
b)yarn.scheduler.maximum-allocation-vcores=A。
其中,由于CPU核和GPU卡的性能、参数等都不相同,所以需要获知GPU节点上被管理的CPU虚拟核与GPU卡数之间的对应关系,以便将CPU虚拟核资源与GPU卡资源进行绑定。
GPU节点和CPU节点的都有CPU(以下简称CPU资源),区别是GPU节点上还有若干个GPU(以下的描述中简称为GPU资源)。通过将CPU资源和GPU资源绑定的方式,让YARN间接管理GPU资源。假设GPU节点上设置有N个CPU虚拟核,有M块GPU,划分M个CPU虚拟核给YARN管理。这样YARN管理的该GPU节点的CPU资源数目和GPU资源数目一致。也就是说,虚拟CPU核的数量与GPU的数量的相同。
步骤3、为GPU节点和CPU节点打标签;
a)yarn rmadmin-addToClusterNodeLabels cpu,gpu
b)yarn rmadmin-replaceLabelsOnNode"GPUserver=gpu CPUserver=cpu"。
其中,为了实现GPU资源的调度,如图2所示,需要给GPU节点打上GPU标签,给CPU节点打上CPU标签,把集群中的GPU节点和CPU节点分开。并限制需要GPU资源的计算任务只能请求到GPU节点上的资源,需要CPU资源的计算任务只能请求到CPU节点上的资源。以便YARN能够调度GPU资源。
步骤4、在YARN中使用capacity scheduler(选择的管理器),并设置指定队列(如队列qgpu)对GPU节点的访问权限(根据YARN的调度方法来设置);
a)yarn.scheduler.capacity.root.qgpu.accessible-node-labels=cpu,gpu
b)yarn.scheduler.capacity.root.qgpu.accessible-node-labels.cpu.capacity=100
c)yarn.scheduler.capacity.root.qgpu.accessible-node-labels.gpu.capacity=100
步骤5、上述设置完成后,可以提交TFoS任务,并指定队列名称为qgpu、AM和执行者(executor)所使用的标签;
a)--queue qgpu
b)--conf spark.yarn.am.nodeLabelExpression="cpu"
c)--conf spark.yarn.executor.nodeLabelExpression="gpu"。
步骤6、任务提交后,YARN(即capacity scheduler)根据任务的描述信息中的标签信息,可以确定任务需要使用GPU资源,然后根据节点的标签信息及任务所需要的X个GPU资源,确定对应GPU节点上所需的X个虚拟CPU核数,从存在空闲CPU虚拟核的GPU节点中可以随机或者根据需要选取X个虚拟CPU核,以执行任务;如果具有空闲资源的所有GPU节点的空闲CPU虚拟核的总数小于X时,则任务进入等待状态,直到空闲CPU虚拟核数大于或等于X时开始执行。
当该计算任务结束时,释放使用的CPU资源,实际上是释放对应的GPU资源。
从上面的描述可以看出,本发明实施例中,基于YARNY标签技术和将CPU资源与GPU资源绑定的方式实现了GPU资源的调度,且该方案不需要修改YARN的源码,也不需要重新开发一个独立的GPU管理调度系统,解决了原有方案实现难度高,开发周期长,开发运维成本高等问题,主要有以下优点:
1、复杂度低,实现简单,充分利用YARN已有的功能。
2、开发工作量低,节省时间成本和研发成本。
3、不会增加运维成本。
为实现本发明实施例的方法,本发明实施例还提供了一种资源调度装置,如图3所示,该装置包括:
接收单元31,用于接收第一任务;
确定单元32,用于利用所述第一任务的描述信息中的标签信息,确定需要请求GPU节点的资源;
分配单元33,用于根据Hadoop集群中各节点的节点标签及第一任务的GPU资源需求,从Hadoop集群中选择出至少一个GPU节点;并将所述第一任务分配到相应的GPU节点中执行;所述节点标签表征对应节点为GPU节点或CPU节点。
其中,由于本发明实施例的方案是基于Hadoop YARN集群的标签功能实现的,所以实际应用时,需要给Hadoop集群中的GPU节点打上GPU标签,并给CPU节点打上CPU标签,如图2所示,从而将Hadoop集群中的GPU节点和CPU节点分开,即区分GPU节点和CPU节点,以便后续YARN能够实现GPU资源的调度和管理。
其中,为了对GPU资源的调度,接收的任务的描述信息中需要有GPU标签,以使YARN能够获知接收的任务需要分配GPU资源。而且,为了实现简单,实际应用时,可以定义:需要GPU资源的计算任务只能请求到GPU节点上的流计算单元资源,需要CPU资源的计算任务只能请求到CPU节点上的CPU计算单元资源。
也就是说,为了实现GPU资源的管理和调度,需要让YARN获得各节点的标签信息。
基于此,在一实施例中,该装置还可以包括:
初始化单元,用于进行初始化操作,获得Hadoop集群中各节点的节点标签信息。
为所述第一任务分配GPU资源时,由于YARN并不能够直接区GPU(以卡为单元)和CPU核,而GPU和CPU核的性能并不是完全相同的,所以需要对二者进行一个换算,以便将第一任务分配到相应的GPU节点中执行。
基于此,所述分配单元33,具体用于:
根据所述第一任务所需的GPU数量、虚拟CPU核数与GPU数量的对应关系,确定GPU节点上所需的虚拟CPU核数;其中,
所述虚拟CPU核为GPU节点上被管理的CPU核的虚拟化,数量与GPU卡数相关。
其中,确定执行第一任务的GPY节点时,所述分配单元33根据Hadoop集群中各节点的节点标签及各节点上报的空闲资源,从Hadoop集群中选择出至少一个候选GPU节点;
根据所述第一任务的GPU资源需求及至少一个候选GPU节点上报的空闲虚拟CPU核数,从所述至少一个候选GPU节点中选择至少一个执行所述第一任务的GPU节点。
所述虚拟CPU核数与GPU数量的对应关系,为:
虚拟CPU核的数量为GPU的数量的Q倍;Q为大于或等于1的整数。
这里,相应的GPU节点可以根据确定的虚拟CPU核数,为所述第一任务获取本机对应的GPU数量。
举个例子来说,假设GPU节点上有M块GPU,相当于可以根据需要将Q的取值设置1,这样就可以设置成M个CPU虚拟核;其中,M、N均为大于或等于1的整数。这样,YARN管理的该GPU节点上CPU资源数目(CPU核数)和GPU资源的数目(GPU卡数)是一致的,即相同的,此时,被管理的CPU虚拟核数与GPU数量的对应关系,为:GPU节点上被管理的CPU虚拟核的数量和GPU的数量相同。
这样一来,当接收的任务(请求GPU节点的资源)的描述信息中所需的资源是X块GPU时,所述分配单元33实际上为该任务分配的是X个虚拟CPU核。相应地,对于存在m个(m是小于或等于M的整数)空闲CPU虚拟核的GPU节点,可以作为备选节点,向YARN申请m个子任务,再由YARN将X个子任务随机或者根据需要分配给对应的备选节点。举个例子来说,假设有N个备选节点,每个节点的空闲CPU虚拟核分别是m1、m2…,mN,当分配给所有备选节点时,则有m1+m2+…+mN=X。当然,也可以根据需要,比如备选节点上报空闲CPU虚拟核的先后顺序以及对应的空闲CPU虚拟核数,分配给至少一个备选节点。
通俗点说,当任务通过YARN获取到该GPU节点的m个CPU虚拟核资源时,实际上是通过GPU节点获取了本机的m块GPU资源。当该计算任务结束释放使用的CPU虚拟核时,也就释放了对应的GPU资源。
当然,实际应用时,也可以根据需要将Q设成其它数值,比如2等。其实现原理与上面描述的类似,这里不再赘述。
本发明实施例提供的方案,能够支持GPU资源的调度,当接收的任务请求的是CPU计算单元资源时,也需要在任务的描述信息中携带CPU标签,以使YARN能够获知需要调度CPU计算单元资源。
基于此,在一实施例中,所述确定单元32,还用于利用所述第一任务的描述信息中的标签信息,确定需要请求CPU节点的资源;
所述分配单元33,还用于根据Hadoop集群中各节点的节点标签及第一任务的CPU资源需求,从Hadoop集群中选择出至少一个CPU节点;并将所述第一任务分配到相应的CPU节点中执行。
实际应用时,在Hadoop集群中,还可以不给一些节点打标签,这样,当接收的任务的描述信息中没有携带节点标签时,可以从这些未打标签的节点中为接收的任务分配资源。
也就是说,当接收的任务的描述信息中没有携带节点标签时,默认从未打标签的节点中为接收的任务分配资源。
需要说明的是:上述实施例提供的资源调度装置在进行资源调度时,仅以上述各程序模块的划分进行举例说明,实际应用中,可以根据需要而将上述处理分配由不同的程序模块完成,即将装置的内部结构划分成不同的程序模块,以完成以上描述的全部或者部分处理。
对应地,本发明实施例还提供了一种本发明实施例还提供了一种资源调度装置,如图4所示,该资源调度装置40包括:处理器41和用于存储能够在处理器上运行的计算机程序的存储器42,
其中,所述处理器用于运行所述计算机程序时,执行:
接收第一任务;
利用所述第一任务的描述信息中的标签信息,确定需要请求GPU节点的资源;
根据Hadoop集群中各节点的节点标签及第一任务的GPU资源需求,从Hadoop集群中选择出至少一个GPU节点;并将所述第一任务分配到相应的GPU节点中执行;所述节点标签表征对应节点为GPU节点或CPU节点。
其中,在一实施例中,所述处理器41用于运行所述计算机程序时,执行:
根据所述第一任务所需的GPU数量、虚拟CPU核数与GPU数量的对应关系,确定GPU节点上所需的虚拟CPU核数;其中,
所述虚拟CPU核为GPU节点上被管理的CPU核的虚拟化,数量与GPU卡数相关。
在一实施例中,所述处理器41用于运行所述计算机程序时,执行:
根据Hadoop集群中各节点的节点标签及各节点上报的空闲资源,从Hadoop集群中选择出至少一个候选GPU节点;
根据所述第一任务的GPU资源需求及至少一个候选GPU节点上报的空闲虚拟CPU核数,从所述至少一个候选GPU节点中选择至少一个执行所述第一任务的GPU节点。
这里,所述虚拟CPU核数与GPU数量的对应关系,为:
虚拟CPU核的数量为GPU的数量的Q倍;Q为大于或等于1的整数。
在一实施例中,所述处理器41还用于运行所述计算机程序时,执行:
当利用所述第一任务的描述信息中的标签信息,确定需要请求CPU节点的资源时,根据Hadoop集群中各节点的节点标签及第一任务的CPU资源需求,从Hadoop集群中选择出至少一个CPU节点;并将所述第一任务分配到相应的CPU节点中执行。
在一实施例中,所述处理器41还用于运行所述计算机程序时,执行:
进行初始化操作,获得Hadoop集群中各节点的节点标签信息。
实际应用时,如图4所示,该装置还可以包括:至少一个网络接口43。资源调度装置40中的各个组件通过总线系统44耦合在一起。可理解,总线系统44用于实现这些组件之间的连接通信。总线系统44除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图4中将各种总线都标为总线系统44。
其中,可以理解,存储器42可以是易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(ROM,Read OnlyMemory)、可编程只读存储器(PROM,Programmable Read-Only Memory)、可擦除可编程只读存储器(EPROM,Erasable Programmable Read-Only Memory)、电可擦除可编程只读存储器(EEPROM,Electrically Erasable Programmable Read-Only Memory)、磁性随机存取存储器(FRAM,ferromagnetic random access memory)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(CD-ROM,Compact Disc Read-Only Memory);磁表面存储器可以是磁盘存储器或磁带存储器。易失性存储器可以是随机存取存储器(RAM,Random AccessMemory),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(SRAM,Static Random Access Memory)、同步静态随机存取存储器(SSRAM,Synchronous Static Random Access Memory)、动态随机存取存储器(DRAM,Dynamic Random Access Memory)、同步动态随机存取存储器(SDRAM,SynchronousDynamic Random Access Memory)、双倍数据速率同步动态随机存取存储器(DDRSDRAM,Double Data Rate Synchronous Dynamic Random Access Memory)、增强型同步动态随机存取存储器(ESDRAM,Enhanced Synchronous Dynamic Random Access Memory)、同步连接动态随机存取存储器(SLDRAM,SyncLink Dynamic Random Access Memory)、直接内存总线随机存取存储器(DRRAM,Direct Rambus Random Access Memory)。本发明实施例描述的存储器42旨在包括但不限于这些和任意其它适合类型的存储器。
本发明实施例中的存储器42用于存储各种类型的数据以支持资源调度装置40的操作。这些数据的示例包括:用于在资源调度装置40上操作的任何计算机程序,如操作系统421和应用程序422。其中,操作系统421包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序422可以包含各种应用程序,用于实现各种应用业务。实现本发明实施例方法的程序可以包含在应用程序422中。
上述本发明实施例揭示的方法可以应用于处理器41中,或者由处理器41实现。处理器41可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器41中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器41可以是通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。处理器41可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本发明实施例所公开的方法的步骤,可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于存储介质中,该存储介质位于存储器42,处理器41读取存储器42中的信息,结合其硬件完成前述方法的步骤。
在示例性实施例中,资源调度装置40可以被一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,ProgrammableLogic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable Gate Array)、通用处理器、控制器、微控制器(MCU,Micro Controller Unit)、微处理器(Microprocessor)、或其他电子元件实现,用于执行前述方法。
在示例性实施例中,本发明实施例还提供了一种计算机可读存储介质,例如包括计算机程序的存储器42,上述计算机程序可由资源调度装置的处理器41执行,以完成前述方法所述步骤。计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、Flash Memory、磁表面存储器、光盘、或CD-ROM等存储器。
具体地,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器运行时,执行:
接收第一任务;
利用所述第一任务的描述信息中的标签信息,确定需要请求GPU节点的资源;
根据Hadoop集群中各节点的节点标签及第一任务的GPU资源需求,从Hadoop集群中选择出至少一个GPU节点;并将所述第一任务分配到相应的GPU节点中执行;所述节点标签表征对应节点为GPU节点或CPU节点。
在一实施例中,所述计算机程序被处理器运行时,执行:
根据所述第一任务所需的GPU数量、虚拟CPU核数与GPU数量的对应关系,确定GPU节点上所需的虚拟CPU核数;其中,
所述虚拟CPU核为GPU节点上被管理的CPU核的虚拟化,数量与GPU卡数相关。
在一实施例中,所述计算机程序被处理器运行时,执行:
根据Hadoop集群中各节点的节点标签及各节点上报的空闲资源,从Hadoop集群中选择出至少一个候选GPU节点;
根据所述第一任务的GPU资源需求及至少一个候选GPU节点上报的空闲虚拟CPU核数,从所述至少一个候选GPU节点中选择至少一个执行所述第一任务的GPU节点。
其中,所述虚拟CPU核数与GPU数量的对应关系,为:
虚拟CPU核的数量为GPU的数量的Q倍;Q为大于或等于1的整数。
在一实施例中,所述计算机程序被处理器运行时,还执行:
当利用所述第一任务的描述信息中的标签信息,确定需要请求CPU节点的资源时,根据Hadoop集群中各节点的节点标签及第一任务的CPU资源需求,从Hadoop集群中选择出至少一个CPU节点;并将所述第一任务分配到相应的CPU节点中执行。
在一实施例中,所述计算机程序被处理器运行时,还执行:
进行初始化操作,获得Hadoop集群中各节点的节点标签信息。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

Claims (13)

1.一种资源调度方法,其特征在于,所述方法包括:
接收第一任务;
利用所述第一任务的描述信息中的标签信息,确定需要请求GPU节点的资源;
根据Hadoop集群中各节点的节点标签及第一任务的GPU资源需求,从Hadoop集群中选择出至少一个GPU节点;并将所述第一任务分配到相应的GPU节点中执行;所述节点标签表征对应节点为GPU节点或CPU节点。
2.根据权利要求1所述的方法,其特征在于,所述将所述第一任务分配到相应的GPU节点中执行,包括:
根据所述第一任务所需的GPU数量、虚拟CPU核数与GPU数量的对应关系,确定GPU节点上所需的虚拟CPU核数;其中,
所述虚拟CPU核为GPU节点上被管理的CPU核的虚拟化,数量与GPU卡数相关。
3.根据权利要求2所述的方法,其特征在于,
所述虚拟CPU核数与GPU数量的对应关系,为:
虚拟CPU核的数量为GPU的数量的Q倍;Q为大于或等于1的整数。
4.根据权利要求2所述的方法,其特征在于,所述根据Hadoop集群中各节点的节点标签及第一任务的GPU资源需求,从Hadoop集群中选择出至少一个GPU节点,包括:
根据Hadoop集群中各节点的节点标签及各节点上报的空闲资源,从Hadoop集群中选择出至少一个候选GPU节点;
根据所述第一任务的GPU资源需求及至少一个候选GPU节点上报的空闲虚拟CPU核数,从所述至少一个候选GPU节点中选择至少一个执行所述第一任务的GPU节点。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当利用所述第一任务的描述信息中的标签信息,确定需要请求CPU节点的资源时,根据Hadoop集群中各节点的节点标签及第一任务的CPU资源需求,从Hadoop集群中选择出至少一个CPU节点;并将所述第一任务分配到相应的CPU节点中执行。
6.根据权利要求1至5任一项所述的方法,其特征在于,所述方法还包括:
进行初始化操作,获得Hadoop集群中各节点的节点标签信息;所述节点标签信息是基于YARN的标签功能生成的。
7.一种资源调度装置,其特征在于,所述装置包括:
接收单元,用于接收第一任务;
确定单元,用于利用所述第一任务的描述信息中的标签信息,确定需要请求GPU节点的资源;
分配单元,用于根据Hadoop集群中各节点的节点标签及第一任务的GPU资源需求,从Hadoop集群中选择出至少一个GPU节点;并将所述第一任务分配到相应的GPU节点中执行;所述节点标签表征对应节点为GPU节点或CPU节点。
8.根据权利要求7所述的装置,其特征在于,所述分配单元,具体用于:
根据所述第一任务所需的GPU数量、虚拟CPU核数与GPU数量的对应关系,确定GPU节点上所需的虚拟CPU核数;其中,
所述虚拟CPU核为GPU节点上被管理的CPU核的虚拟化,数量与GPU卡数相关。
9.根据权利要求8所述的装置,其特征在于,
所述虚拟CPU核数与GPU数量的对应关系,为:
虚拟CPU核的数量为GPU的数量的Q倍;Q为大于或等于1的整数。
10.根据权利要求7所述的装置,其特征在于,
所述确定单元,还用于利用所述第一任务的描述信息中的标签信息,确定需要请求CPU节点的资源;
分配单元,还用于根据Hadoop集群中各节点的节点标签及第一任务的CPU资源需求,从Hadoop集群中选择出至少一个CPU节点;并将所述第一任务分配到相应的CPU节点中执行。
11.根据权利要求7至10任一项所述的装置,其特征在于,所述装置还包括:
初始化单元,用于进行初始化操作,获得Hadoop集群中各节点的节点标签信息;所述节点标签信息是基于YARN的标签功能生成的。
12.一种资源调度装置,其特征在于,包括:处理器和用于存储能够在处理器上运行的计算机程序的存储器,
其中,所述处理器用于运行所述计算机程序时,执行权利要求1至6任一项所述方法的步骤。
13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6任一项所述方法的步骤。
CN201710458058.4A 2017-06-16 2017-06-16 资源调度方法、装置及计算机可读存储介质 Active CN109144710B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710458058.4A CN109144710B (zh) 2017-06-16 2017-06-16 资源调度方法、装置及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710458058.4A CN109144710B (zh) 2017-06-16 2017-06-16 资源调度方法、装置及计算机可读存储介质

Publications (2)

Publication Number Publication Date
CN109144710A true CN109144710A (zh) 2019-01-04
CN109144710B CN109144710B (zh) 2020-12-04

Family

ID=64830583

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710458058.4A Active CN109144710B (zh) 2017-06-16 2017-06-16 资源调度方法、装置及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN109144710B (zh)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110413412A (zh) * 2019-07-19 2019-11-05 苏州浪潮智能科技有限公司 一种基于gpu集群资源分配的方法和装置
CN110750358A (zh) * 2019-10-18 2020-02-04 上海交通大学苏州人工智能研究院 一种超算平台资源利用率分析方法
WO2020034646A1 (zh) * 2018-08-17 2020-02-20 华为技术有限公司 一种资源调度方法及装置
CN111190739A (zh) * 2019-12-31 2020-05-22 西安翔腾微电子科技有限公司 一种资源分配方法、装置、电子设备及存储介质
CN111580990A (zh) * 2020-05-08 2020-08-25 中国建设银行股份有限公司 一种任务调度方法、调度节点、集中配置服务器及系统
CN111966500A (zh) * 2020-09-07 2020-11-20 网易(杭州)网络有限公司 资源调度方法、装置、电子设备及存储介质
CN112860396A (zh) * 2021-01-28 2021-05-28 福建紫辰信息科技有限公司 一种基于分布式深度学习的gpu调度方法及系统
CN113157403A (zh) * 2020-01-07 2021-07-23 中科寒武纪科技股份有限公司 作业处理的方法、装置、计算机设备及可读存储介质
CN113157427A (zh) * 2020-01-07 2021-07-23 中科寒武纪科技股份有限公司 任务迁移的方法、装置、计算机设备及可读存储介质
CN113344311A (zh) * 2020-03-03 2021-09-03 北京国双科技有限公司 任务执行方法、装置、存储介质、处理器及电子设备
CN113742064A (zh) * 2021-08-06 2021-12-03 苏州浪潮智能科技有限公司 一种服务器集群的资源整理方法、系统、设备及介质
CN113867973A (zh) * 2021-12-06 2021-12-31 腾讯科技(深圳)有限公司 资源分配的方法和装置
WO2022088659A1 (zh) * 2020-10-26 2022-05-05 北京市商汤科技开发有限公司 资源调度方法及装置、电子设备、存储介质和程序产品

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105512083A (zh) * 2015-11-30 2016-04-20 华为技术有限公司 基于yarn的资源管理方法、装置及系统
CN105677467A (zh) * 2015-12-31 2016-06-15 中国科学院深圳先进技术研究院 基于量化标签的Yarn资源调度器
US20170026441A1 (en) * 2015-07-23 2017-01-26 Christopher Moudy Real-Time Partitioned Processing Streaming

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170026441A1 (en) * 2015-07-23 2017-01-26 Christopher Moudy Real-Time Partitioned Processing Streaming
CN105512083A (zh) * 2015-11-30 2016-04-20 华为技术有限公司 基于yarn的资源管理方法、装置及系统
CN105677467A (zh) * 2015-12-31 2016-06-15 中国科学院深圳先进技术研究院 基于量化标签的Yarn资源调度器

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
CYPRIEN NOEL等: ""基于Hadoop集群的大规模分布式深度学习"", 《HTTPS://WWW.CSDN.NET/ARTICLE/2015-10-01/2825840》 *

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020034646A1 (zh) * 2018-08-17 2020-02-20 华为技术有限公司 一种资源调度方法及装置
CN110413412B (zh) * 2019-07-19 2022-03-25 苏州浪潮智能科技有限公司 一种基于gpu集群资源分配的方法和装置
CN110413412A (zh) * 2019-07-19 2019-11-05 苏州浪潮智能科技有限公司 一种基于gpu集群资源分配的方法和装置
CN110750358A (zh) * 2019-10-18 2020-02-04 上海交通大学苏州人工智能研究院 一种超算平台资源利用率分析方法
CN111190739A (zh) * 2019-12-31 2020-05-22 西安翔腾微电子科技有限公司 一种资源分配方法、装置、电子设备及存储介质
CN111190739B (zh) * 2019-12-31 2023-09-01 西安翔腾微电子科技有限公司 一种资源分配方法、装置、电子设备及存储介质
CN113157427B (zh) * 2020-01-07 2024-03-15 中科寒武纪科技股份有限公司 任务迁移的方法、装置、计算机设备及可读存储介质
CN113157403A (zh) * 2020-01-07 2021-07-23 中科寒武纪科技股份有限公司 作业处理的方法、装置、计算机设备及可读存储介质
CN113157427A (zh) * 2020-01-07 2021-07-23 中科寒武纪科技股份有限公司 任务迁移的方法、装置、计算机设备及可读存储介质
CN113344311A (zh) * 2020-03-03 2021-09-03 北京国双科技有限公司 任务执行方法、装置、存储介质、处理器及电子设备
CN111580990A (zh) * 2020-05-08 2020-08-25 中国建设银行股份有限公司 一种任务调度方法、调度节点、集中配置服务器及系统
CN111966500B (zh) * 2020-09-07 2023-08-11 网易(杭州)网络有限公司 资源调度方法、装置、电子设备及存储介质
CN111966500A (zh) * 2020-09-07 2020-11-20 网易(杭州)网络有限公司 资源调度方法、装置、电子设备及存储介质
WO2022088659A1 (zh) * 2020-10-26 2022-05-05 北京市商汤科技开发有限公司 资源调度方法及装置、电子设备、存储介质和程序产品
CN112860396A (zh) * 2021-01-28 2021-05-28 福建紫辰信息科技有限公司 一种基于分布式深度学习的gpu调度方法及系统
CN113742064A (zh) * 2021-08-06 2021-12-03 苏州浪潮智能科技有限公司 一种服务器集群的资源整理方法、系统、设备及介质
CN113742064B (zh) * 2021-08-06 2023-08-04 苏州浪潮智能科技有限公司 一种服务器集群的资源整理方法、系统、设备及介质
CN113867973A (zh) * 2021-12-06 2021-12-31 腾讯科技(深圳)有限公司 资源分配的方法和装置
CN113867973B (zh) * 2021-12-06 2022-02-25 腾讯科技(深圳)有限公司 资源分配的方法和装置

Also Published As

Publication number Publication date
CN109144710B (zh) 2020-12-04

Similar Documents

Publication Publication Date Title
CN109144710A (zh) 资源调度方法、装置及计算机可读存储介质
Grandl et al. Multi-resource packing for cluster schedulers
CN102163072B (zh) 用于节能的基于软件的线程重映射
WO2018006864A1 (zh) 创建虚拟机的方法、装置及系统、控制设备和存储介质
CN111344688B (zh) 云计算中资源提供的方法及系统
WO2022028157A1 (zh) 云环境下微服务系统的弹性伸缩方法、系统、介质及设备
CN102521014B (zh) 虚拟机的部署方法及装置
CN109684074A (zh) 物理机资源分配方法及终端设备
GB2510005A (en) Allocation of processing cores among a set of software programs
CN113434284B (zh) 一种隐私计算服务端设备、系统及任务调度方法
WO2016105732A1 (en) Techniques to generate a graph model for cloud infrastructure elements
CN114996018A (zh) 面向异构计算的资源调度方法、节点、系统、设备及介质
CN101976201B (zh) 基于cpu亲和力的虚拟cpu动态绑定方法
WO2023000673A1 (zh) 硬件加速器设备管理方法、装置及电子设备和存储介质
CN106155730A (zh) 操作系统加载方法及装置
Salehi et al. Resource provisioning based on preempting virtual machines in distributed systems
Ma et al. vLocality: Revisiting data locality for MapReduce in virtualized clouds
TW202134870A (zh) 任務調度方法和裝置
Liu et al. High-responsive scheduling with MapReduce performance prediction on hadoop YARN
Murshed et al. Gridsim: A toolkit for the modeling and simulation of global grids
Xu et al. vPFS: Bandwidth virtualization of parallel storage systems
CN111125070A (zh) 一种数据交换方法及平台
CN108595249A (zh) 一种虚拟机任务调度方法及电子设备
CN109324886A (zh) 集群资源调度方法和装置
CN112114967B (zh) 一种基于服务优先级的gpu资源预留方法

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