掌桥专利:专业的专利平台
掌桥专利
首页

一种基于YARN集群的资源管理方法、计算机设备和存储介质

文献发布时间:2023-06-19 11:52:33


一种基于YARN集群的资源管理方法、计算机设备和存储介质

技术领域

本发明涉及计算机技术领域,具体涉及一种基于YARN集群的资源管理方法、装置、计算机设备和计算机可读存储介质。

背景技术

YARN(Yet Another Resource Negotiator,另一种资源协调者)是一种新的Hadoop资源管理器,它是一个通用资源管理系统,可为上层应用提供统资源管理和调度。YARN的基本思想是将JobTracker的两个主要功能(资源管理和作业调度/监控)分离,主要方法是创建一个全局的ResourceManager(RM)和若干个针对应用程序的ApplicationMaster(AM)。

RM是一个全局的资源管理器,负责整个系统的资源管理和分配,RM主要由两个组件构成:调度器(Scheduler)和应用程序管理器(Applications Manager,ASM)。调度器能够根据容量、队列等限制条件(如每个队列分配一定的资源,最多运行一定数量的应用程序等)将系统中的资源分配给各个正在运行的应用程序。应用程序管理器负责管理整个系统中所有应用程序,包括应用程序提交、与调度器协商资源等。

用户提交的每个应用程序均包含一个AM,AM的主要功能包括:与RM调度器协商以获取资源(用Container表示);将得到的任务进一步分配给内部的任务(资源的二次分配);监控所有任务运行状态,并在任务运行失败时重新为任务申请资源以重启任务。

然而,发明人研究发现,现有技术中YARN队列上的资源使用完后,该队列上未处理完的应用程序以及未处理的应用程序将处于停滞状态,严重影响系统性能。

发明内容

本发明的目的在于提供了一种基于YARN集群的资源管理方法、装置、计算机设备和计算机可读存储介质,能够解决现有技术中在YARN队列上的资源使用完后,队列上未处理完的应用程序以及未处理的应用程序会处于停滞状态,影响系统性能的缺陷。

本发明的一个方面提供了一种基于YARN集群的资源管理方法,所述方法包括:接收在YARN集群中设置的监控字段,获取所述监控字段所监控的数据,作为目标监控数据,其中,所述目标监控数据包括所述YARN集群中YARN队列的已配置资源和已使用资源;判断所述YARN队列的已使用资源是否达到所述YARN队列的已配置资源;在所述YARN队列的已使用资源达到所述YARN队列的已配置资源时,判断所述YARN队列上是否存在待处理作业;在所述YARN队列上存在所述待处理作业时,为所述YARN队列上的所述待处理作业配置资源。

可选地,所述目标监控数据还包括所述待处理作业的未配置资源,为所述YARN队列上的所述待处理作业配置资源的步骤包括:获取其他所述YARN队列的所述目标监控数据;根据所述其他所述YARN队列的所述目标监控数据计算所述其他所述YARN队列的剩余可用资源;在所述其他所述YARN队列的剩余可用资源大于等于所述YARN队列上的所述待处理作业的未配置资源时,将所述YARN队列上的所述待处理作业移动至所述其他所述YARN队列。

可选地,所述目标监控数据还包括正在处理作业的未配置资源,根据所述其他所述YARN队列的所述目标监控数据计算所述其他所述YARN队列的剩余可用资源的步骤包括:计算所述其他所述YARN队列的已配置资源和已使用资源之间的差值;统计所述其他所述YARN队列中所有所述正在处理作业的未配置资源总和;统计所述其他所述YARN队列中所有所述待处理作业的未配置资源总和;计算所述其他所述YARN队列的已配置资源和已使用资源之间的差值、所述其他所述YARN队列中所有所述正在处理作业的未配置资源总和及所述其他所述YARN队列中所有所述待处理作业的未配置资源总和之间的差值,得到所述其他所述YARN队列的剩余可用资源。

可选地,为所述YARN队列上的所述待处理作业配置资源的步骤包括:获取其他所述YARN队列的所述目标监控数据;根据所述其他所述YARN队列的所述目标监控数据计算所述其他所述YARN队列的剩余可用资源;在所有所述其他所述YARN队列的剩余可用资源均小于所述YARN队列上的所述待处理作业的未配置资源时,获取所述YARN集群的剩余可用资源;在所述YARN集群的剩余可用资源大于预设阈值时,计算所述YARN集群中各个所述YARN队列的已配置资源在所述YARN集群的已配置资源总和中的占比;根据各个所述YARN队列的占比和所述YARN集群的剩余可用资源为各个所述YARN队列配置资源。

可选地,根据各个所述YARN队列的占比和所述YARN集群的剩余可用资源为各个所述YARN队列配置资源的步骤包括:从所述YARN集群的剩余可用资源中选取所述YARN队列的占比的资源配置给所述YARN队列。

可选地,根据各个所述YARN队列的占比和所述YARN集群的剩余可用资源为各个所述YARN队列配置资源的步骤包括:将各个所述YARN队列以占比从大到小的顺序排列,得到各个所述YARN队列的排列顺序;根据各个所述YARN队列的占比确定给各个所述YARN队列配置资源的次数;以所述排列顺序作为配置顺序,根据所述YARN集群的剩余可用资源依次给各个所述YARN队列配置对应次数次的资源,直至所述YARN集群的剩余可用资源已被配置完或者给各个所述YARN队列配置了对应次数次的资源。

可选地,所述目标监控数据还包括所述待处理作业的未配置资源和正在处理作业的未配置资源,根据所述YARN集群的剩余可用资源依次给各个所述YARN队列配置对应次数次的资源,直至所述YARN集群的剩余可用资源已被配置完或者给各个所述YARN队列配置了对应次数次的资源的步骤包括:步骤A1:获取所述YARN队列中的一个作业,其中,所述作业为所述待处理作业或者所述正在处理作业;步骤A2:从所述YARN队列的所述目标监控数据中确定所述作业对应的资源,并从所述YARN集群的剩余可用资源中获取所述作业对应的资源配置给所述YARN队列,以使所述YARN队列根据配置的所述作业对应的资源处理所述作业,其中,在所述作业为待处理作业时,所述作业对应的资源为所述待处理作业的未配置资源,在所述作业为正在处理作业时,所述作业对应的资源为所述正在处理作业的未配置资源;步骤A3:判断所述YARN队列中是否还有其他的所述作业,并判断所述YARN集群的剩余可用资源是否被配置完,其中,若所述YARN队列中还有其他的所述作业,且所述YARN集群的剩余可用资源未被配置完,执行步骤A4,若所述YARN集群的剩余可用资源已被配置完,则退出,若所述YARN队列中没有其他的所述作业,且所述YARN集群的剩余可用资源未被配置完,则执行步骤A5;步骤A4:判断所述YARN队列是否被配置了对应次数次的资源,若是,则执行步骤A5,若否,则返回执行步骤A1;步骤A5:继续获取其他所述YARN队列中的一个作业,直至所述YARN集群的剩余可用资源已被配置完或者给各个所述YARN队列配置了对应次数次的新的资源。

可选地,所述目标监控数据还包括所述待处理作业的未配置资源和正在处理作业的未配置资源,所述方法还包括:在所述YARN集群的剩余可用资源小于等于所述预设阈值,或者所述YARN集群的剩余可用资源已被配置完且未给所有所述YARN队列配置对应次数次的资源时,统计所述YARN集群中所有所述待处理作业的未配置资源总和;统计所述YARN集群中所有所述正在处理作业的未配置资源总和;确定所述YARN集群的各个备用节点的可用资源;根据所述YARN集群中所有所述待处理作业的未配置资源总和、所述YARN集群中所有所述正在处理作业的未配置资源总和以及所述YARN集群的各个备用节点的可用资源,确定待选取的备用节点的数量;选取所述数量个备用节点添加至所述YARN集群中。

本发明的另一个方面提供了一种计算机设备,所述计算机设备包括:存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任一实施例所述的基于YARN集群的资源管理方法。

本发明的再一个方面提供了一种计算机可读存储介质,其上存储有计算机程序,上述计算机程序被处理器执行时实现上述任一实施例所述的基于YARN集群的资源管理方法。

本发明提供的基于YARN集群的资源管理方法,通过预先在YARN集群中设置监控字段,并获取这些监控字段所监控的数据,且在获取这些数据之后,动态检测YARN队列的已使用资源是否达到YARN队列的已配置资源,一旦达到,即可为YARN队列中的待处理作业配置资源,从而避免现有技术中由于YARN队列上的资源使用完后,队列上未处理完的应用程序以及未处理的应用程序会处于停滞状态,影响系统性能的缺陷。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1示意性示出了根据本发明实施例一的基于YARN集群的资源管理方法的流程图;

图2示意性示出了根据本发明实施例二的基于YARN集群的资源管理方法的流程图;

图3示意性示出了根据本发明实施例三的基于YARN集群的资源管理方法的流程图;

图4示意性示出了根据本发明实施例四的基于YARN集群的资源管理方法的流程图;

图5示意性示出了根据本发明实施例五的基于YARN集群的资源管理方案的示意图;

图6示意性示出了根据本发明实施例六的基于YARN集群的资源管理装置的框图;

图7示意性示出了根据本发明实施例七的适于实现基于YARN集群的资源管理方法的计算机设备的框图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

YARN是一个开源的资源调度系统,由多台服务器组成集群,能够对集群中服务器的CPU(central processing unit,中央处理器)和内存进行统一管理和分配。应用程序(可称为作业)提交到YARN集群上,由YARN集群统一进行资源分配。YARN集群中的资源可以按照队列(可称为YARN队列)划分,每个YARN队列有最大资源配置限制,可称为已配置资源,提交到YARN集群中的作业可在YARN队列中运行,并使用YARN队列中的已配置资源。发明人在使用YARN集群处理作业的过程中发现,在该YARN集群中,提交到队列中作业可能由于资源限制无法得到执行,如YARN队列的已配置资源被使用完后,如果YARN队列上存在未处理的作业,则这些未处理的作业将处于停滞状态;又或者作业被调度执行,但是运行较为缓慢,无法满足其所需要的资源量,例如该作业所需资源为100GB内存和100核CPU,但是只能获取到50GB内存和50核CPU。针对以上缺陷,发明发现现有技术中并未提供有效的解决的方案。基于此,发明人研究得出,需要提供一种基于YARN集群的资源管理方法能够实时监控YARN集群的资源使用情况、YARN队列的资源使用情况以及作业的资源配置情况,并根据这些监控的信息即时做出动态的调整,并且现有技术中YARN集群本身提供的监控信息并未包含以上情况。

其中,本发明提供的一种基于YARN集群的资源管理方法、装置、计算机设备和计算机可读存储介质,将通过以下实施例进行详细描述,且下述实施例序号仅仅为了描述,并不代表实施例的优劣。

实施例一

图1示意性示出了根据本发明实施例一的基于YARN集群的资源管理方法的流程图。如图1所示,该实施例一所述的基于YARN集群的资源管理方法可以包括步骤S11~步骤S14,其中:

步骤S11,接收在YARN集群中设置的监控字段,获取所述监控字段所监控的数据,作为目标监控数据,其中,所述目标监控数据包括所述YARN集群中YARN队列的已配置资源和已使用资源。

本实施例中,预先在YARN集群中设置了一些监控字段,通过这些监控字段,YARN集群可以实时监控这些监控字段对应的数据,并可以将这些数据统称为目标监控数据,其中,目标监控数据可以包括YARN队列的已配置资源和已使用资源,已配置资源可以为YARN队列最大可用资源,已使用资源可以为YARN队列已配置出去的资源,如YARN队列中所有已处理完作业所使用的资源总和以及所有正在处理作业当前已配置资源总和统称为YARN队列的已使用资源。其中,资源可以包括CPU资源和内存资源。

步骤S12,判断所述YARN队列的已使用资源是否达到所述YARN队列的已配置资源。

本实施例中,步骤S12~步骤S14可以是针对YARN集群中任一个YARN队列而言,也可以是对每个YARN队列均执行这些操作。其中,YARN队列的已使用资源达到YARN队列的已配置资源即是YARN队列的已使用资源等于YARN队列的已配置资源。

步骤S13,在所述YARN队列的已使用资源达到所述YARN队列的已配置资源时,判断所述YARN队列上是否存在待处理作业。

此处,只要是YARN队列中存在待处理作业即可执行步骤S14,而不关心YARN队列中存在几个待处理作业。

步骤S14,在所述YARN队列上存在所述待处理作业时,为所述YARN队列上的所述待处理作业配置资源。

步骤S14可以是针对YARN队列中的任一待处理作业而言,也可以是针对YARN队列中的每一个待处理作业而言。

本发明提供的基于YARN集群的资源管理方法,通过预先在YARN集群中设置监控字段,并获取这些监控字段所监控的数据,且在获取这些数据之后,动态检测YARN队列的已使用资源是否达到YARN队列的已配置资源,一旦达到,即可为YARN队列中的待处理作业配置资源,从而避免现有技术中由于YARN队列上的资源使用完后,队列上未处理完的应用程序以及未处理的应用程序会处于停滞状态,影响系统性能的缺陷。

实施例二

本发明的实施例二提供了一种基于YARN集群的资源管理方法,在该实施例中,目标监控数据还包括待处理作业的未配置资源,且本实施例在为待处理作业配置资源时主要考虑了将待处理作业移动至剩余可用资源充足的其他YARN队列中。该实施例二提供的基于YARN集群的资源管理方法与上述实施例一相对应,相应的技术特征和技术效果在本实施例中不再详述,相关之处可参考上述实施例一。具体地,图2示意性示出了根据本发明实施例二的基于YARN集群的资源管理方法的流程图,如图2所示,该基于YARN集群的资源管理方法可以包括步骤S21~步骤S26,其中:

步骤S21,接收在YARN集群中设置的监控字段,获取所述监控字段所监控的数据,作为目标监控数据,其中,所述目标监控数据包括所述YARN集群中YARN队列的已配置资源和已使用资源。

步骤S22,判断所述YARN队列的已使用资源是否达到所述YARN队列的已配置资源。

步骤S23,在所述YARN队列的已使用资源达到所述YARN队列的已配置资源时,判断所述YARN队列上是否存在待处理作业。

步骤S24,在所述YARN队列上存在所述待处理作业时,获取其他所述YARN队列的所述目标监控数据。

其中,其他YARN队列的目标监控数据即为:该YARN队列的已配置资源和已使用资源,以及该YARN队列上每个待处理作业的未配置资源。需要说明的是,对于每个待处理作业,任何YARN队列均不会为其配置资源,除非该待处理作业已经开始被处理,这样,待处理作业的未配置资源即为处理完该待处理作业所需的全部资源。

步骤S25,根据所述其他所述YARN队列的所述目标监控数据计算所述其他所述YARN队列的剩余可用资源。

本实施例中,目标监控数据还可以包括正在处理作业的未配置资源,其中,由于正在处理作业已经被处理一部分,因此YARN队列已经为正在处理作业配置一部分资源,可称为正在处理作业的已配置资源,相应地,正在处理作业的已配置资源和未配置资源总和即为处理完该正在处理作业所需的全部资源。

相应地,其他YARN队列的目标监控数据还可以包括该YARN队列上每个正在处理作业的未配置资源。

另外,本实施例中,计算该获取的其他YARN队列的剩余可用资源可以有两种方案,第一种方案为将该YARN队列的已配置资源去除已使用资源即为剩余可用资源;另一种方案为将该YARN队列的已配置资源去除已使用资源、该YARN队列上所有正在处理作业的未配置资源总和以及所有待处理作业的未配置资源总和之后剩下的资源,即可称为剩余可用资源。其中,第二种方案具体如下:

可选地,步骤S25可以包括步骤M1~步骤M4,其中:

步骤M1,计算所述其他所述YARN队列的已配置资源和已使用资源之间的差值;

步骤M2,统计所述其他所述YARN队列中所有所述正在处理作业的未配置资源总和;

步骤M3,统计所述其他所述YARN队列中所有所述待处理作业的未配置资源总和;

步骤M4,计算所述其他所述YARN队列的已配置资源和已使用资源之间的差值、所述其他所述YARN队列中所有所述正在处理作业的未配置资源总和及所述其他所述YARN队列中所有所述待处理作业的未配置资源总和之间的差值,得到所述其他所述YARN队列的剩余可用资源。

步骤S26,在所述其他所述YARN队列的剩余可用资源大于等于所述YARN队列上的所述待处理作业的未配置资源时,将所述YARN队列上的所述待处理作业移动至所述其他所述YARN队列。

在考虑是否将一个YARN队列上的待处理作业移动至另一个YARN队列上时,需要考虑另一个YARN队列的剩余可用资源是否足以支撑处理完该YARN队列上的这个待处理作业,即判断另一个YARN队列的剩余可用资源是否大于等于该YARN队列上的这个待处理作业的未配置资源,若是则将这个待处理作业移动至另一个YARN队列。

本实施例通过将资源不足的YARN队列上的待处理作业的迁移至资源充沛的YARN队列上,可以及时的处理这些待处理作业,避免了现有技术中由于YARN队列上的资源使用完后该队列上未处理完的应用程序以及未处理的应用程序会处于停滞状态的缺陷。

实施例三

本发明的实施例三提供了一种基于YARN集群的资源管理方法,本实施例在为待处理作业配置资源时主要考虑了将如果YARN集群中所有其他的YARN队列的剩余可用资源均不足以处理完该待处理任务,则需要利用YARN集群的剩余可用资源为该YARN队列再次配置资源,从而扩充该YARN队列的资源,使得该YARN队列能够根据新扩充的资源及时的处理待处理作业,避免了现有技术中由于YARN队列上的资源使用完后该队列上未处理完的应用程序以及未处理的应用程序会处于停滞状态的缺陷。该实施例三提供的基于YARN集群的资源管理方法与上述实施例二相对应,相应的技术特征和技术效果在本实施例中不再详述,相关之处可参考上述实施例二。具体地,图3示意性示出了根据本发明实施例三的基于YARN集群的资源管理方法的流程图,如图3所示,该基于YARN集群的资源管理方法可以包括步骤S31~步骤S38,其中:

步骤S31,接收在YARN集群中设置的监控字段,获取所述监控字段所监控的数据,作为目标监控数据,其中,所述目标监控数据包括所述YARN集群中YARN队列的已配置资源和已使用资源。

步骤S32,判断所述YARN队列的已使用资源是否达到所述YARN队列的已配置资源。

步骤S33,在所述YARN队列的已使用资源达到所述YARN队列的已配置资源时,判断所述YARN队列上是否存在待处理作业。

步骤S34,在所述YARN队列上存在所述待处理作业时,获取其他所述YARN队列的所述目标监控数据。

步骤S35,根据所述其他所述YARN队列的所述目标监控数据计算所述其他所述YARN队列的剩余可用资源。

步骤S36,在所有所述其他所述YARN队列的剩余可用资源均小于所述YARN队列上的所述待处理作业的未配置资源时,获取所述YARN集群的剩余可用资源。

在YARN集群中任何一个其他YARN队列的剩余可用资源均不足以支撑处理完该待处理作业时,可以进一步考虑YARN集群是否还有足够的剩余可用资源。其中,YARN集群有一个最大可用资源,即YARN集群中所有服务器的资源总和,YARN集群还有一个已配置资源,即该YARN集群中所有YARN队列的已配置资源总和,YARN集群的剩余资源即为YARN集群的最大可用资源去除该YARN集群的已配置资源。

步骤S37,在所述YARN集群的剩余可用资源大于预设阈值时,计算所述YARN集群中各个所述YARN队列的已配置资源在所述YARN集群的已配置资源总和中的占比。

预设阈值可以为0,也可以为其他数值,具体可以根据用户需求设定,此处不做限定。如果YARN集群的剩余可用资源大于预设阈值,可以进一步计算各个YARN队列的已配置资源在该YARN集群的已配置资源总和中的占比。

步骤S38,根据各个所述YARN队列的占比和所述YARN集群的剩余可用资源为各个所述YARN队列配置资源。

其中,步骤S38可以至少包括两种方案,第一种方案为,对于任一YARN队列而言,从YARN集群的剩余可用资源中确定出该YARN队列的占比的资源,然后将该确定出的资源配置给该YARN队列,以便该YARN队列根据该配置的资源处理待处理作业。即步骤S38可以包括:从所述YARN集群的剩余可用资源中选取所述YARN队列的占比的资源配置给所述YARN队列。第二种方案可以参见实施例四。

实施例四

本发明的实施例四提供了一种基于YARN集群的资源管理方法,且本实施例在执行实施例三中的步骤S38时主要考虑了如何保证各个YARN队列负载均衡的问题。该实施例四提供的基于YARN集群的资源管理方法与上述实施例三相对应,相应的技术特征和技术效果在本实施例中不再详述,相关之处可参考上述实施例三。具体地,图4示意性示出了根据本发明实施例四的基于YARN集群的资源管理方法的流程图,如图4所示,该基于YARN集群的资源管理方法可以包括步骤S41~步骤S410,其中:

步骤S41,接收在YARN集群中设置的监控字段,获取所述监控字段所监控的数据,作为目标监控数据,其中,所述目标监控数据包括所述YARN集群中YARN队列的已配置资源和已使用资源。

步骤S42,判断所述YARN队列的已使用资源是否达到所述YARN队列的已配置资源。

步骤S43,在所述YARN队列的已使用资源达到所述YARN队列的已配置资源时,判断所述YARN队列上是否存在待处理作业。

步骤S44,在所述YARN队列上存在所述待处理作业时,获取其他所述YARN队列的所述目标监控数据。

步骤S45,根据所述其他所述YARN队列的所述目标监控数据计算所述其他所述YARN队列的剩余可用资源。

步骤S46,在所有所述其他所述YARN队列的剩余可用资源均小于所述YARN队列上的所述待处理作业的未配置资源时,获取所述YARN集群的剩余可用资源。

步骤S47,在所述YARN集群的剩余可用资源大于预设阈值时,计算所述YARN集群中各个所述YARN队列的已配置资源在所述YARN集群的已配置资源总和中的占比。

步骤S48,将各个所述YARN队列以占比从大到小的顺序排列,得到各个所述YARN队列的排列顺序。

本实施例中,考虑到每个YARN队列的已配置资源代表预先设置的该YARN队列的最大可配置资源,也即YARN队列的占比越大,表明该YARN队列配置的资源越多,则该YARN队列的处理性能越优秀,相应地,该YARN队列的重要程度也越高,因此将YARN队列以占比从大到小的顺序排列,也即将YARN队列按照重要程度从高到低排序。

步骤S49,根据各个所述YARN队列的占比确定给各个所述YARN队列配置资源的次数。

可以将占比整数化以确定配置资源的次数,如,YARN集群有3个YARN队列,占比分别为2/10、3/10和5/10,则可以将3个YARN队列配置资源的次数确定为2次、3次和5次,还可以确定为4次、6次和10次等。

步骤S410,以所述排列顺序作为配置顺序,根据所述YARN集群的剩余可用资源依次给各个所述YARN队列配置对应次数次的资源,直至所述YARN集群的剩余可用资源已被配置完或者给各个所述YARN队列配置了对应次数次的资源。

进一步,可以以排列顺序作为配置顺序,依次为各个YARN队列配置资源,其中,配置规则为:按照排列顺序从大到小即按照重要程度由高到低,为各个YARN队列配置对应次数次的资源,直至YARN集群的剩余可用资源已经被配置完或者为各个YARN队列配置了对应次数的资源。

由于本实施例根据YARN队列的占比考虑配置顺序,即将YARN队列的重要程度考虑在内,从而保证了重要的YARN队列能够优先行处理作业。

但是,当某一YARN队列确定的配置资源的次数大于该YARN队列上待处理作业数量和正在处理作业的总数时,如果依然为该YARN队列配置对应次数次的资源,会导致资源的浪费。因此,步骤S410中根据所述YARN集群的剩余可用资源依次给各个所述YARN队列配置对应次数次的资源,直至所述YARN集群的剩余可用资源被配置完或者给各个所述YARN队列配置了对应次数次的资源的步骤可以包括步骤A1~步骤A5,其中:

步骤A1:获取所述YARN队列中的一个作业,其中,所述作业为所述待处理作业或者所述正在处理作业。

步骤A2:从所述YARN队列的所述目标监控数据中确定所述作业对应的资源,并从所述YARN集群的剩余可用资源中获取所述作业对应的资源配置给所述YARN队列,以使所述YARN队列根据配置的所述作业对应的资源处理所述作业。

其中,在所述作业为待处理作业时,所述作业对应的资源为所述待处理作业的未配置资源,在所述作业为正在处理作业时,所述作业对应的资源为所述正在处理作业的未配置资源。

具体地,每次为YARN队列配置资源可以是,随机从YARN队列中选中一个作业,然后将YARN集群中获取该选中的作业对应的未配置资源配置给该YARN队列,进而该YARN队列即可以根据配置的资源处理该选中的作业。

步骤A3:判断所述YARN队列中是否还有其他的所述作业,并判断所述YARN集群的剩余可用资源是否被配置完。

若所述YARN队列中还有其他的所述作业,且所述YARN集群的剩余可用资源未被配置完,执行步骤A4。

若所述YARN集群的剩余可用资源已被配置完,则退出。由于YARN集群的剩余可用资源已被配置完,无论YARN队列中是否有其他的作业,均不会再执行配置资源的步骤,因此可以直接退出配置操作。

若所述YARN队列中没有其他的所述作业,且所述YARN集群的剩余可用资源未被配置完,则执行步骤A5。

步骤A4:判断所述YARN队列是否被配置了对应次数次的资源。

若是,则执行步骤A5;若否,则返回执行步骤A1。

步骤A5:继续获取其他所述YARN队列中的一个作业,直至所述YARN集群的剩余可用资源已被配置完或者给各个所述YARN队列配置了对应次数次的新的资源。

其中,步骤A5的具体操作与步骤A1~步骤A4类似,本实施例不再赘述。

进一步,考虑到若是由于YARN集群没有足够的资源而导致作业不能继续被处理,从而无法即时完成处理任务,本实施例还可以为YARN集群额外增加服务器,以扩充YARN集群的资源量。具体地,所述基于YARN集群的资源管理方法还可以包括步骤N1~步骤N5,其中:

步骤N1,在所述YARN集群的剩余可用资源小于等于所述预设阈值,或者所述YARN集群的剩余可用资源已被配置完且未给所有所述YARN队列配置对应次数次的资源时,统计所述YARN集群中所有所述待处理作业的未配置资源总和。

其中,未给所有所述YARN队列配置对应次数次的资源可以未处理完YARN集群中所有的作业。

步骤N2,统计所述YARN集群中所有所述正在处理作业的未配置资源总和。

步骤N3,确定所述YARN集群的各个备用节点的可用资源。

每个备用节点有一个可用资源,该可用资源可以为该备用节点的CPU资源和内存资源。

步骤N4,根据所述YARN集群中所有所述待处理作业的未配置资源总和、所述YARN集群中所有所述正在处理作业的未配置资源总和以及所述YARN集群的各个备用节点的可用资源,确定待选取的备用节点的数量。

其中,可以计算YARN集群中所有待处理作业的未配置资源总和与所有正在处理作业的未配置资源总和的总和,然后若是每个备用节点的可用资源一致,则可以用计算的总和除以该可用资源,即可得到待选取的备用节点的数量;若是备用节点的可用资源不一致,可以利用计算的总和依次减去各个备用节点的可用资源,以确定待选取的备用节点的数量。

步骤N5,选取所述数量个备用节点添加至所述YARN集群中。

在将这些备用节点添加至YARN集群之后,还可以采用实施例三和实施例四中的资源配置规则继续为YARN队列配置资源。

实施例五

图5示意性示出了根据本发明实施例五的基于YARN集群的资源管理方案的示意图。

如图5所示,监控程序用于监控设置的监控字段所监控的数据,即目标监控数据,也即图中所示的获取集群资源使用信息的在步骤。进一步检查YARN队列中的资源如YARN队列已配置资源和已使用资源、YARN队列上待处理作业的未配置资源(即作业所需资源)和正在处理作业的未配置资源(也是作业所需资源)、以及YARN集群的剩余可用资源。然后根据上述实施例一至四中的各个实施例实现资源配置(即匹配策略),若是其他YARN队列的剩余可用资源大于等于确定的待处理作业的未配置资源,则将该待处理作业移动至该其他YARN队列,此时该其他YARN队列称为空闲队列;否则根据YARN集群剩余可用资源动态调整YARN队列资源,具体可以参考实施例三和实施例四;进一步,若是YARN集群的剩余可用资源被配置完,可以动态增加备用节点。可选地,若是YARN集群的剩余可用资源足够用,还可以动态删减备用节点,以使备用节点处理其他的任务。

实施例六

本发明的实施例六提供了一种基于YARN集群的资源管理装置,该基于YARN集群的资源管理装置与上述实施例一相对应,相应的技术特征和技术效果在本实施例中不再详述,相关之处可参考上述实施例一。具体地,图6示意性示出了根据本发明实施例六的基于YARN集群的资源管理装置的框图,如图6所示,该基于YARN集群的资源管理装置600可以包括接收模块601、第一判断模块602、第二判断模块603和分配模块604,其中:

接收模块601,用于接收在YARN集群中设置的监控字段,获取所述监控字段所监控的数据,作为目标监控数据,其中,所述目标监控数据包括所述YARN集群中YARN队列的已配置资源和已使用资源;

第一判断模块602,用于判断所述YARN队列的已使用资源是否达到所述YARN队列的已配置资源;

第二判断模块603,用于在所述YARN队列的已使用资源达到所述YARN队列的已配置资源时,判断所述YARN队列上是否存在待处理作业;

分配模块604,用于在所述YARN队列上存在所述待处理作业时,为所述YARN队列上的所述待处理作业配置资源。

可选地,所述目标监控数据还包括所述待处理作业的未配置资源,所述分配模块在为所述YARN队列上的所述待处理作业配置资源时,还用于:获取其他所述YARN队列的所述目标监控数据;根据所述其他所述YARN队列的所述目标监控数据计算所述其他所述YARN队列的剩余可用资源;在所述其他所述YARN队列的剩余可用资源大于等于所述YARN队列上的所述待处理作业的未配置资源时,将所述YARN队列上的所述待处理作业移动至所述其他所述YARN队列。

可选地,所述目标监控数据还包括正在处理作业的未配置资源,所述分配模块在根据所述其他所述YARN队列的所述目标监控数据计算所述其他所述YARN队列的剩余可用资源时,还用于:计算所述其他所述YARN队列的已配置资源和已使用资源之间的差值;统计所述其他所述YARN队列中所有所述正在处理作业的未配置资源总和;统计所述其他所述YARN队列中所有所述待处理作业的未配置资源总和;计算所述其他所述YARN队列的已配置资源和已使用资源之间的差值、所述其他所述YARN队列中所有所述正在处理作业的未配置资源总和及所述其他所述YARN队列中所有所述待处理作业的未配置资源总和之间的差值,得到所述其他所述YARN队列的剩余可用资源。

可选地,所述分配模块在为所述YARN队列上的所述待处理作业配置资源时,还用于:获取其他所述YARN队列的所述目标监控数据;根据所述其他所述YARN队列的所述目标监控数据计算所述其他所述YARN队列的剩余可用资源;在所有所述其他所述YARN队列的剩余可用资源均小于所述YARN队列上的所述待处理作业的未配置资源时,获取所述YARN集群的剩余可用资源;在所述YARN集群的剩余可用资源大于预设阈值时,计算所述YARN集群中各个所述YARN队列的已配置资源在所述YARN集群的已配置资源总和中的占比;根据各个所述YARN队列的占比和所述YARN集群的剩余可用资源为各个所述YARN队列配置资源。

可选地,所述分配模块在根据各个所述YARN队列的占比和所述YARN集群的剩余可用资源为各个所述YARN队列配置资源时,还用于:从所述YARN集群的剩余可用资源中选取所述YARN队列的占比的资源配置给所述YARN队列。

可选地,所述分配模块在根据各个所述YARN队列的占比和所述YARN集群的剩余可用资源为各个所述YARN队列配置资源时,还用于:将各个所述YARN队列以占比从大到小的顺序排列,得到各个所述YARN队列的排列顺序;根据各个所述YARN队列的占比确定给各个所述YARN队列配置资源的次数;以所述排列顺序作为配置顺序,根据所述YARN集群的剩余可用资源依次给各个所述YARN队列配置对应次数次的资源,直至所述YARN集群的剩余可用资源已被配置完或者给各个所述YARN队列配置了对应次数次的资源。

可选地,所述目标监控数据还包括所述待处理作业的未配置资源和正在处理作业的未配置资源,所述分配模块在根据所述YARN集群的剩余可用资源依次给各个所述YARN队列配置对应次数次的资源,直至所述YARN集群的剩余可用资源被配置完或者给各个所述YARN队列配置了对应次数次的资源时,还用于:步骤A1:获取所述YARN队列中的一个作业,其中,所述作业为所述待处理作业或者所述正在处理作业;步骤A2:从所述YARN队列的所述目标监控数据中确定所述作业对应的资源,并从所述YARN集群的剩余可用资源中获取所述作业对应的资源配置给所述YARN队列,以使所述YARN队列根据配置的所述作业对应的资源处理所述作业,其中,在所述作业为待处理作业时,所述作业对应的资源为所述待处理作业的未配置资源,在所述作业为正在处理作业时,所述作业对应的资源为所述正在处理作业的未配置资源;步骤A3:判断所述YARN队列中是否还有其他的所述作业,并判断所述YARN集群的剩余可用资源是否被配置完,其中,若所述YARN队列中还有其他的所述作业,且所述YARN集群的剩余可用资源未被配置完,执行步骤A4,若所述YARN集群的剩余可用资源已被配置完,则退出,若所述YARN队列中没有其他的所述作业,且所述YARN集群的剩余可用资源未被配置完,则执行步骤A5;步骤A4:判断所述YARN队列是否被配置了对应次数次的资源,若是,则执行步骤A5,若否,则返回执行步骤A1;步骤A5:继续获取其他所述YARN队列中的一个作业,直至所述YARN集群的剩余可用资源已被配置完或者给各个所述YARN队列配置了对应次数次的新的资源。

可选地,所述目标监控数据还包括所述待处理作业的未配置资源和正在处理作业的未配置资源,所述装置还包括:第一统计模块,用于在所述YARN集群的剩余可用资源小于等于所述预设阈值,或者所述YARN集群的剩余可用资源已被配置完且未给所有所述YARN队列配置对应次数次的资源时,统计所述YARN集群中所有所述待处理作业的未配置资源总和;第二统计模块,用于统计所述YARN集群中所有所述正在处理作业的未配置资源总和;第一确定模块,用于确定所述YARN集群的各个备用节点的可用资源;第二确定模块,用于根据所述YARN集群中所有所述待处理作业的未配置资源总和、所述YARN集群中所有所述正在处理作业的未配置资源总和以及所述YARN集群的各个备用节点的可用资源,确定待选取的备用节点的数量;添加模块,用于选取所述数量个备用节点添加至所述YARN集群中。

实施例七

图7示意性示出了根据本发明实施例七的适于实现基于YARN集群的资源管理方法的计算机设备的框图。本实施例中,计算机设备700可以是执行程序的智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。如图7所示,本实施例的计算机设备700至少包括但不限于:可通过系统总线相互通信连接的存储器701、处理器702、网络接口703。需要指出的是,图7仅示出了具有组件701-703的计算机设备700,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。

本实施例中,存储器703至少包括一种类型的计算机可读存储介质,可读存储介质包括包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器701可以是计算机设备700的内部存储单元,例如该计算机设备700的硬盘或内存。在另一些实施例中,存储器701也可以是计算机设备700的外部存储设备,例如该计算机设备700上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,存储器701还可以既包括计算机设备700的内部存储单元也包括其外部存储设备。在本实施例中,存储器701通常用于存储安装于计算机设备700的操作系统和各类应用软件,例如基于YARN集群的资源管理方法的程序代码等。此外,存储器701还可以用于暂时地存储已经输出或者将要输出的各类数据。

处理器702在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器702通常用于控制计算机设备700的总体操作。例如执行与计算机设备700进行数据交互或者通信相关的控制和处理等的基于YARN集群的资源管理方法的程序代码。

在本实施例中,存储于存储器701中的基于YARN集群的资源管理方法还可以被分割为一个或者多个程序模块,并由一个或多个处理器(本实施例为处理器702)所执行,以完成本发明。

网络接口703可包括无线网络接口或有线网络接口,该网络接口703通常用于在计算机设备700与其他计算机设备之间建立通信链接。例如,网络接口703用于通过网络将计算机设备700与外部终端相连,在计算机设备700与外部终端之间的建立数据传输通道和通信链接等。网络可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯系统(Global System of Mobile communication,简称为GSM)、宽带码分多址(Wideband CodeDivision Multiple Access,简称为WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi等无线或有线网络。

实施例八

本实施例八还提供一种计算机可读存储介质,包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘、服务器、App应用商城等,其上存储有计算机程序,所述计算机程序被处理器执行时实现基于YARN集群的资源管理方法。

显然,本领域的技术人员应该明白,上述的本发明实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明实施例不限制于任何特定的硬件和软件结合。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

相关技术
  • 一种基于YARN集群的资源管理方法、计算机设备和存储介质
  • YARN集群资源调度方法、装置、介质和计算机设备
技术分类

06120113084212