一种节点资源调配方法及装置与流程

文档序号:23793307发布日期:2021-01-30 07:08阅读:86来源:国知局
一种节点资源调配方法及装置与流程

[0001]
本发明涉及电子技术领域,尤其涉及一种节点资源调配方法及装置。


背景技术:

[0002]
为了满足大数据的处理需求,产生了hadoop集群。一个hadoop集群通常可以包括多个节点,该节点可以是虚拟机也可以是物理机,例如服务器。hadoop集群中的每个节点具有一定的执行任务的资源,例如,cpu、内存、硬盘等,利用节点资源可以执行各类任务。
[0003]
目前,一个hadoop集群的节点资源通常可以用于执行该hadoop集群内的应用程序,例如,用于实现该hadoop集群自身业务功能的应用程序;也可以用于执行该hadoop集群外的应用程序,也即非用于实现该hadoop集群自身业务功能的应用程序,例如,与该hadoop集群自身业务功能存在交互的应用程序。然而在现有技术中,hadoop集群的资源管理器通常仅能对用于hadoop集群内的应用程序的资源进行管理,而无法对用于hadoop集群外的应用程序的资源进行有效的管理。因此,为了避免资源冲突,通常是预先分配好用于执行该hadoop集群内的应用程序的资源和用于执行该hadoop集群外的应用程序的资源,但是这种方式容易造成在一些场景下资源不够用,在另一些场景下资源又存在较多浪费。
[0004]
可见,现有技术中存在hadoop集群的节点资源利用率较低的问题。


技术实现要素:

[0005]
本发明实施例提供一种节点资源调配方法及装置,以解决现有技术中hadoop集群的节点资源利用率较低的问题。
[0006]
第一方面,本发明实施例提供了一种节点资源调配方法,该方法包括:
[0007]
获取hadoop集群中各个节点的资源使用情况;
[0008]
根据资源使用场景和所述hadoop集群中各个节点的资源使用情况,调配第一类资源和第二类资源,其中,所述第一类资源为所述hadoop集群的节点资源中用于所述hadoop集群内的应用程序的资源,所述第二类资源为所述hadoop集群的节点资源中用于所述hadoop集群外的应用程序的资源;
[0009]
根据调配后的所述第一类资源调整yarn资源管理器的资源调度器,以使所述资源调度器对调配后的所述第一类资源进行调度。
[0010]
可选的,所述根据资源使用场景和所述hadoop集群中各个节点的资源使用情况,调配第一类资源和第二类资源,包括:
[0011]
在所述资源使用场景为接收到第一应用程序的启动请求的情况下,若确定所述第二类资源不满足第一应用程序的资源需求,则根据所述hadoop集群中各个节点的资源使用情况,调配所述第一类资源和所述第二类资源;
[0012]
其中,所述第一应用程序为所述hadoop集群外的应用程序,调配后的所述第二类资源满足所述第一应用程序的资源需求。
[0013]
可选的,所述第二类资源不满足所述第一应用程序的资源需求,包括如下至少一
项:
[0014]
所述第二类资源中空闲资源量小于所述第一应用程序所需求的资源量;
[0015]
所述第二类资源不包括第一节点的资源,其中,所述第一节点为所述第一应用程序指定的节点。
[0016]
可选的,所述根据所述hadoop集群中各个节点的资源使用情况和资源使用场景,调配第一类资源和第二类资源之后,所述方法还包括:
[0017]
利用调配后的所述第二类资源启动并运行所述第一应用程序;
[0018]
在所述第一应用程序结束运行的情况下,释放所述第一应用程序所占用的节点资源,并调配所述第一类资源和所述第二类资源。
[0019]
可选的,所述根据所述hadoop集群中各个节点的资源使用情况和资源使用场景,调配第一类资源和第二类资源,包括:
[0020]
在所述资源使用场景为接收到针对第二应用程序的资源预留请求的情况下,根据所述资源预留请求和所述hadoop集群中各个节点的资源使用情况,调配第一类资源和第二类资源;
[0021]
其中,所述第二应用程序为所述hadoop集群外的应用程序,所述资源预留请求包括请求预留的资源信息和预留时限,在所述预留时限内所述资源信息所指示的资源用于所述第二应用程序。
[0022]
可选的,所述在所述资源使用场景为接收到针对第二应用程序的资源预留请求的情况下,根据所述资源预留请求和所述hadoop集群中各个节点的资源使用情况,调配第一类资源和第二类资源,包括:
[0023]
在所述资源使用场景为接收到针对第二应用程序的资源预留请求的情况下,根据所述第二应用程序的优先级和预估的在所述预留时限内所述资源信息所指示的资源的使用情况,确定是否为所述第二应用程序预留资源;
[0024]
在确定为第二应用程序预留资源的情况下,根据所述资源预留请求和所述hadoop集群中各个节点的资源使用情况,调配第一类资源和第二类资源。
[0025]
可选的,所述在所述资源使用场景为接收到针对第二应用程序的资源预留请求的情况下,根据所述资源预留请求和所述hadoop集群中各个节点的资源使用情况,调配第一类资源和第二类资源之后,所述方法还包括:
[0026]
在所述预留时限内利用所述资源信息所指示的资源启动并运行所述第二应用程序。
[0027]
第二方面,本发明实施例还提供一种资源调配装置,该装置包括:
[0028]
获取模块,用于获取hadoop集群中各个节点的资源使用情况;
[0029]
第一调配模块,用于根据资源使用场景和所述hadoop集群中各个节点的资源使用情况,调配第一类资源和第二类资源,其中,所述第一类资源为所述hadoop集群的节点资源中用于所述hadoop集群内的应用程序的资源,所述第二类资源为所述hadoop集群的节点资源中用于所述hadoop集群外的应用程序的资源;
[0030]
调整模块,用于根据调配后的所述第一类资源调整yarn资源管理器的资源调度器,以使所述资源调度器对调配后的所述第一类资源进行调度。
[0031]
可选的,所述第一调配模块,包括:
[0032]
第一调配单元,用于在所述资源使用场景为接收到第一应用程序的启动请求的情况下,若确定所述第二类资源不满足所述第一应用程序的资源需求,则根据所述hadoop集群中各个节点的资源使用情况,调配所述第一类资源和所述第二类资源;
[0033]
其中,所述第一应用程序为所述hadoop集群外的应用程序,调配后的所述第二类资源满足所述第一应用程序的资源需求。
[0034]
可选的,所述第二类资源不满足所述第一应用程序的资源需求,包括如下至少一项:
[0035]
所述第二类资源中空闲资源量小于所述第一应用程序所需求的资源量;
[0036]
所述第二类资源不包括第一节点的资源,其中,所述第一节点为所述第一应用程序指定的节点。
[0037]
可选的,所述装置还包括:
[0038]
第一控制模块,用于所述根据所述hadoop集群中各个节点的资源使用情况和资源使用场景,调配第一类资源和第二类资源之后,利用调配后的所述第二类资源启动并运行所述第一应用程序;
[0039]
第二调配模块,用于在所述第一应用程序结束运行的情况下,释放所述第一应用程序所占用的节点资源,并调配所述第一类资源和所述第二类资源。
[0040]
可选的,所述第一调配模块,包括:
[0041]
第二调配单元,用于在所述资源使用场景为接收到针对第二应用程序的资源预留请求的情况下,根据所述资源预留请求和所述hadoop集群中各个节点的资源使用情况,调配第一类资源和第二类资源;
[0042]
其中,所述第二应用程序为所述hadoop集群外的应用程序,所述资源预留请求包括请求预留的资源信息和预留时限,在所述预留时限内所述资源信息所指示的资源用于所述第二应用程序。
[0043]
可选的,所述第二调配单元具体用于:
[0044]
在所述资源使用场景为接收到针对第二应用程序的资源预留请求的情况下,根据所述第二应用程序的优先级和预估的在所述预留时限内所述资源信息所指示的资源的使用情况,确定是否为所述第二应用程序预留资源;
[0045]
在确定为第二应用程序预留资源的情况下,根据所述资源预留请求和所述hadoop集群中各个节点的资源使用情况,调配第一类资源和第二类资源。
[0046]
可选的,所述装置还包括:
[0047]
第二控制模块,用于所述在所述资源使用场景为接收到针对第二应用程序的资源预留请求的情况下,根据所述资源预留请求和所述hadoop集群中各个节点的资源使用情况,调配第一类资源和第二类资源之后,在所述预留时限内利用所述资源信息所指示的资源启动并运行所述第二应用程序。
[0048]
第三方面,本发明实施例还提供一种资源调配装置,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述的节点资源调配方法的步骤。
[0049]
第四方面,本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的节点资源调配方法
的步骤。
[0050]
本发明实施例中,通过获取hadoop集群中各个节点的资源使用情况,并根据资源使用场景和所述hadoop集群中各个节点的资源使用情况,调配用于所述hadoop集群内的应用程序的资源和用于所述hadoop集群外的应用程序的资源这样可以使得用于所述hadoop集群内的应用程序的资源和用于所述hadoop集群外的应用程序的资源分配更为灵活和合理,进而可以提高资源的利用率。此外,根据调配后的所述第一类资源调整yarn资源管理器的资源调度器,以使所述资源调度器对调配后的所述第一类资源进行调度,可以减少资源冲突。
附图说明
[0051]
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
[0052]
图1是本发明实施例提供的节点资源调配方法的流程图;
[0053]
图2是本发明实施例可应用的一种网络架构的示意图;
[0054]
图3是本发明实施例提供的资源调配装置的结构图;
[0055]
图4是本发明又一实施例提供的资源调配装置的结构图。
具体实施方式
[0056]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0057]
本发明实施例提供一种节点资源调配方法,可以应用于资源调配装置,该资源调配装置可以是服务器。参见图1,图1是本发明实施例提供的节点资源调配方法的流程图,如图1所示,包括以下步骤:
[0058]
步骤101、获取hadoop集群中各个节点的资源使用情况。
[0059]
本发明实施例中,上述hadoop集群可以包括多个节点,每个节点可以是虚拟机,也可以是物理机,例如,服务器。上述节点的资源可以包括cpu、内存和硬盘等资源,上述节点的资源使用情况可以包括但不限于该节点的cpu的使用率、内存的使用率和硬盘的使用率等。
[0060]
该步骤中,可以通过资源调配装置主动向请求hadoop集群各个节点的资源使用情况,也可以是各个节点主动向资源调配装置上报资源使用情况。例如,可以通过资源调配装置主动向yarn资源管理器请求各个节点的资源使用情况;也可以是yarn资源管理器主动向资源调配装置上报各个节点的资源使用情况,例如,yarn资源管理器可以通过心跳的方式,将hadoop集群中各个节点的资源使用情况汇总至资源调配装置。
[0061]
步骤102、根据资源使用场景和所述hadoop集群中各个节点的资源使用情况,调配第一类资源和第二类资源;
[0062]
其中,所述第一类资源为所述hadoop集群的节点资源中用于所述hadoop集群内的应用程序的资源,所述第二类资源为所述hadoop集群的节点资源中用于所述hadoop集群外的应用程序的资源。
[0063]
本发明实施例中,上述资源使用场景可以基于需要执行的hadoop集群内的应用程序所需资源的大小、需要执行的hadoop集群外的应用程序所需资源的大小、需要执行的应用程序的优先级和是否存在需要预留资源的应用程序等中的一项或多项确定。可选的,可以预先划分多种资源使用场景,例如,仅存在hadoop集群内的应用程序需要执行的场景、存在hadoop集群外的应用程序需要执行的场景、存在需要预留资源的应用程序的场景、需要执行的hadoop集群内的应用程序和hadoop集群外的应用程序所需要的资源大小发生变更的场景等。
[0064]
上述hadoop集群内的应用程序可以理解为用于实现该hadoop集群自身业务功能的应用程序。例如,若某一hadoop集群的业务功能为订单处理,也即该hadoop集群的节点资源主要用于订单处理,则在该hadoop集群上用于实现订单处理的相关应用程序为该hadoop集群内的应用程序。上述hadoop集群外的应用程序可以理解为非用于实现该hadoop集群自身业务功能的应用程序,或除上述hadoop集群内的应用程序之外的应用程序。例如,与该hadoop集群自身业务功能存在交互的应用程序。
[0065]
实际应用中,hadoop集群的节点资源既可以用于执行该hadoop集群内的应用程序,也可以用于执行该hadoop集群外的应用程序,也即hadoop集群的节点资源可以分配为用于所述hadoop集群内的应用程序的资源(即上述第一类资源)和用于所述hadoop集群外的应用程序的资源(即上述第二类资源)。
[0066]
步骤103、根据调配后的所述第一类资源调整yarn资源管理器的资源调度器,以使所述资源调度器对调配后的所述第一类资源进行调度。
[0067]
本发明实施例中,可以在每次调配第一类资源和第二类资源之后,根据调配后的第一类资源调整yarn资源管理器的资源调度器,以使得该资源调度器仅对调配后的第一类资源进行调度,进而避免资源冲突。
[0068]
在本发明实施例中,可以根据资源使用场景和hadoop集群中各个节点的资源使用情况,动态调配第一类资源和第二类资源。例如,在初始化的情况下可以按照默认的分配比例分配第一类资源和第二类资源;在监测到hadoop集群内的应用程序需要使用较多资源的情况下,可以基于hadoop集群中各个节点的资源使用情况调大第一类资源的大小,并调小第二类资源的大小;在监测到hadoop集群外的应用程序需要较多资源的情况下,可以hadoop集群中各个节点的资源使用情况调小第一类资源的大小,调大第二类资源的大小。由于可以根据资源使用场景动态调配第一类资源和第二类资源,这样可以在避免资源冲突的情况下,有效的提高资源的利用率。此外,根据调配后的所述第一类资源调整yarn资源管理器的资源调度器,以使所述资源调度器对调配后的所述第一类资源进行调度,可以减少资源冲突。
[0069]
可选的,上述步骤102,也即所述根据资源使用场景和所述hadoop集群中各个节点的资源使用情况,调配第一类资源和第二类资源,可以包括:
[0070]
在所述资源使用场景为接收到第一应用程序的启动请求的情况下,若确定所述第二类资源不满足所述第一应用程序的资源需求,则根据所述hadoop集群中各个节点的资源
使用情况,调配所述第一类资源和所述第二类资源;
[0071]
其中,所述第一应用程序为所述hadoop集群外的应用程序,调配后的所述第二类资源满足所述第一应用程序的资源需求。
[0072]
本发明实施例中,上述第一应用程序可以是任意的hadoop集群外的应用程序。上述启动请求可以包括第一应用程序的资源需求,例如,第一应用程序所需资源的大小。对于需要在指定节点上执行的应用程序,上述第一应用程序的资源需求还可以包括指定的节点信息。
[0073]
具体的,可以在接收到第一应用程序的启动请求的情况下,判断当前第二类资源是否满足第一应用程序的资源需求,例如,判断第二类资源中的空闲资源量是否大于或等于第一应用程序所需求的资源量;或判断第二类资源中是否包括指定的节点资源等。
[0074]
可选的,所述第二类资源不满足所述第一应用程序的资源需求,包括如下至少一项:
[0075]
所述第二类资源中空闲资源量小于所述第一应用程序所需求的资源量;
[0076]
所述第二类资源不包括第一节点的资源,其中,所述第一节点为所述第一应用程序指定的节点。
[0077]
本发明实施例中,在确定当前第二类资源不满足第一应用程序的资源需求的情况下,可以根据所述hadoop集群中各个节点的资源使用情况调配第一类资源和第二类资源,并利用调配后的第二类资源启动并运行所述第一应用程序。
[0078]
上述空闲资源可以理解为未被占用的资源,例如,未被占用的内存空间、未被占用的硬盘空间和未被占用的cpu资源等。上述第二类资源中空闲资源量小于第一应用程序所需求的资源量,可以包括但不限于如下至少一项:第二类资源中未被占用的内存空间量小于第一应用程序所需求的内存空间量;第二类资源中未被占用的硬盘空间量小于第一应用程序所需求的硬盘空间量;第二类资源中未被占用的cpu资源量小于第一应用程序所需求的cpu资源量。
[0079]
实际应用中,若第二类资源中的空闲资源量小于第一应用程序所需求的资源量,可以根据hadoop集群中各个节点的资源使用情况,将第一类资源中的部分空闲资源调配为第二类资源,以使调配后的第二类资源中的空闲资源量可以大于或等于第一应用程序所需求的资源量,这样可以在调配后的第二类资源中的空闲资源上启动并运行第一应用程序。若第二类资源不包括第一应用程序指定的节点的资源,且第一类资源中该指定的节点资源处于空闲,则可以将该指定的节点资源调配为第二类资源,这样可以在该指定的节点资源上启动并运行第一应用程序。可选的,若第一类资源中该指定的节点资源被占用,则可以在该指定的节点执行完当前任务之后,将该指定的节点资源调配为第二类资源。
[0080]
可选的,在确定当前第二类资源满足第一应用程序的资源需求的情况下,可以直接利用当前第二类资源启动并运行第一应用程序。
[0081]
本发明实施例在需要运行hadoop集群外的应用程序的情况下,可以基于hadoop集群外的应用程序的资源需求和hadoop集群中各个节点的资源使用情况调配第一类资源和第二类资源,这样不仅可以保证hadoop集群外的应用程序的执行,还可以提高资源分配的灵活性和资源的利用率。
[0082]
可选的,在所述根据所述hadoop集群中各个节点的资源使用情况和资源使用场
景,调配第一类资源和第二类资源之后,所述方法还可以包括:
[0083]
利用调配后的所述第二类资源启动并运行所述第一应用程序;
[0084]
在所述第一应用程序结束运行的情况下,释放所述第一应用程序所占用的节点资源,并调配所述第一类资源和所述第二类资源。
[0085]
本发明实施例中,在所述根据所述hadoop集群中各个节点的资源使用情况和资源使用场景,调配第一类资源和第二类资源之后,可以利用调配后的所述第二类资源启动并运行所述第一应用程序。在第一应用程序结束运行的情况下,可以释放所述第一应用程序所占用的节点资源,并可以再次调配第一类资源和第二类资源。例如,可以将当前的第一类资源和第二类资源调配为第一应用程序运行前的第一类资源和第二类资源。
[0086]
需要说明的是,在本发明实施例中,在调配第一类资源和第二类资源之后,可以根据再次调配后的第一类资源调整yarn资源管理器的资源调度器,以使得该资源调度器仅对再次调配后的第一类资源进行调度,进而避免资源冲突。
[0087]
本发明实施例在第一应用程序结束运行的情况下,释放第一应用程序所占用的节点资源,并再次调配第一类资源和第二类资源,可以减少资源被占用,提高资源分配的灵活性。
[0088]
可选的,上述步骤102,也即所述根据所述hadoop集群中各个节点的资源使用情况和资源使用场景,调配第一类资源和第二类资源,可以包括:
[0089]
在所述资源使用场景为接收到针对第二应用程序的资源预留请求的情况下,根据所述资源预留请求和所述hadoop集群中各个节点的资源使用情况,调配第一类资源和第二类资源;
[0090]
其中,所述第二应用程序为所述hadoop集群外的应用程序,所述资源预留请求包括请求预留的资源信息和预留时限,在所述预留时限内所述资源信息所指示的资源用于所述第二应用程序。
[0091]
本发明实施例中,上述第二应用程序可以是任意的需要定时执行的hadoop集群外的应用程序。上述请求预留的资源信息用于指示请求预留的资源,例如,上述请求预留的资源信息可以是hadoop集群中节点的标识信息,以预留该节点的资源。上述预留时限可以根据第二应用程序待执行的时间进行设置,例如,应用程序b需要在每天的12点至13点之间执行,则上述预留时限可以为每天的12点至13点,或是每天的11点30分至13点30分等。
[0092]
实际应用中,在存在需要定时执行的hadoop集群外的应用程序(也即上述第二应用程序)的情况下,资源调配装置可以接收用户输入的针对第二应用程序的资源预留请求,并根据该资源预留请求和hadoop集群中各个节点的资源使用情况进行资源调配,以保证在预留时限内资源信息所指示的资源用于第二应用程序,进而保证第二应用程序的执行。可选的,资源调配装置可以基于资源预留请求配置定时任务,以利用资源信息所指示的资源定时启动并运行上述第二应用程序。
[0093]
可选的,所述在所述资源使用场景为接收到针对第二应用程序的资源预留请求的情况下,根据所述资源预留请求和所述hadoop集群中各个节点的资源使用情况,调配第一类资源和第二类资源之后,所述方法还可以包括:
[0094]
在所述预留时限内利用所述资源信息所指示的资源启动并运行所述第二应用程序。
[0095]
可选的,在启动上述第二应用程序之前,可以先根据调配后的所述第一类资源调整yarn资源管理器的资源调度器,以免资源调度器对预留资源(也即资源信息所指示的资源)进行调度,发生资源冲突。在根据调配后的所述第一类资源调整yarn资源管理器的资源调度器之后,再利用预留资源启动并运行第二应用程序。
[0096]
可选的,在第二应用程序结束运行的情况下,可以释放第二应用程序所占用的资源,并再次调配第一类资源和第二类资源。
[0097]
本发明实施例在存在需要定时执行的hadoop集群外的应用程序(也即上述第二应用程序)的情况下,根据该资源预留请求和hadoop集群中各个节点的资源使用情况进行资源调配,以保证在预留时限内资源信息所指示的资源用于第二应用程序,从而可以保证第二应用程序的执行,相比于现有技术中将hadoop集群中部分节点的全部资源始终保持空闲以保证第二应用程序的执行,可以有效提高资源的利用率。
[0098]
可选的,所述在所述资源使用场景为接收到针对第二应用程序的资源预留请求的情况下,根据所述资源预留请求和所述hadoop集群中各个节点的资源使用情况,调配第一类资源和第二类资源,可以包括:
[0099]
在所述资源使用场景为接收到针对第二应用程序的资源预留请求的情况下,根据所述第二应用程序的优先级和预估的在所述预留时限内所述资源信息所指示的资源的使用情况,确定是否为所述第二应用程序预留资源;
[0100]
在确定为第二应用程序预留资源的情况下,根据所述资源预留请求和所述hadoop集群中各个节点的资源使用情况,调配第一类资源和第二类资源。
[0101]
实际情况中,对于一些比较重要的业务,通常需要保证用于实现该业务的应用程序优先执行。因此,本发明实施例可以根据各个业务的重要程度,设置用于实现各个业务的应用程序的优先级,从而可以在存在资源冲突的情况下,优先执行优先级较高的应用程序。
[0102]
例如,在时间段t内需要利用节点a的资源执行第二应用程序的情况下,若根据历史资源使用情况预估到在时间段t节点a的资源不会被其他应用程序占用,则可以确定为第二应用程序预留资源;若根据历史资源使用情况预估到在时间段t节点a的资源会被其他应用程序占用,则可以根据第二应用程序的优先级和预估的在时间段t会占用节点a的资源的第三应用程序的优先级判断是否为第二应用程序预留资源,若第二应用程序的优先级高于第三应用程序的优先级,则可以确定为第二应用程序预留资源,否则可以确定不为第二应用程序预留资源。
[0103]
本发明实施例可以根据所述第二应用程序的优先级和预估的在所述预留时限内所述资源信息所指示的资源的使用情况,确定是否为所述第二应用程序预留资源,并在确定为第二应用程序预留资源的情况下,根据所述资源预留请求和所述hadoop集群中各个节点的资源使用情况,调配第一类资源和第二类资源,这样可以保证优先级较高的应用程序优先执行。
[0104]
以下结合示例对本发明实施例进行说明:
[0105]
例如,参见图2,hadoop集群包括节点#1、节点#2和节点#3,yarn资源管理器可以按不同的策略分配hadoop集群的节点资源,也即节点#1、节点#2和节点#3的资源。资源调配装置可以根据调配后的所述第一类资源调整yarn资源管理器的资源调度器,并可以管理hadoop集群外的应用程序。其中,上述资源调配装置可以是服务器。
[0106]
需要说明的是,对于在hadoop集群上执行的各个应用程序(也即上述hadoop集群内的应用程序),可以通过yarn资源管理器的资源调度器基于用于hadoop集群内的应用程序的资源的使用情况,为上述各个应用程序分配资源,并可将这些应用程序分布式执行在不同的节点上。
[0107]
本发明实施例中,上述yarn资源管理器可以通过心跳的方式,将hadoop集群中各个节点的资源使用情况汇总至资源调配装置,资源调配装置可以根据hadoop集群中各个节点的资源使用情况和资源使用场景调配用于hadoop集群内的应用程序的资源和用于hadoop集群外的应用程序的资源,以提高资源的利用率。
[0108]
例如,在非hadoop集群启动的应用程序a(也即上述的hadoop集群外的应用程序)在资源调配装置上申请资源执行启动的情况下,资源调配装置可以调整yarn资源管理器的资源调度器,并将应用程序a启动至空闲的节点,如节点#3,待应用程序a执行结束后,可以释放该节点资源,并再次调整yarn资源管理器的资源调度器。
[0109]
又例如,对于需要定时执行的应用程序b,可以为该应用程序b预留资源,并在资源调配装置上配置定时任务,以定时启动该应用程序b。在启动应用程序b之前,可以预先调整yarn资源管理器的资源调度器,再将应用程序b启动至对应的节点,也即为应用程序b预留的节点。
[0110]
本发明实施例通过资源调配装置调配资源,可以实现在不同的资源使用场景下合理分配资源,保证应用程序正常执行,极大的提高了资源利用率,进而可以节省服务器开销的费用。
[0111]
参见图3,图3是本发明实施例提供的资源调配装置的结构图。如图3所示,资源调配装置300包括:
[0112]
获取模块301,用于获取hadoop集群中各个节点的资源使用情况;
[0113]
第一调配模块302,用于根据资源使用场景和所述hadoop集群中各个节点的资源使用情况,调配第一类资源和第二类资源,其中,所述第一类资源为所述hadoop集群的节点资源中用于所述hadoop集群内的应用程序的资源,所述第二类资源为所述hadoop集群的节点资源中用于所述hadoop集群外的应用程序的资源;
[0114]
调整模块303,用于根据调配后的所述第一类资源调整yarn资源管理器的资源调度器,以使所述资源调度器对调配后的所述第一类资源进行调度。
[0115]
可选的,所述第一调配模块,包括:
[0116]
第一调配单元,用于在所述资源使用场景为接收到第一应用程序的启动请求的情况下,若确定所述第二类资源不满足所述第一应用程序的资源需求,则根据所述hadoop集群中各个节点的资源使用情况,调配所述第一类资源和所述第二类资源;
[0117]
其中,所述第一应用程序为所述hadoop集群外的应用程序,调配后的所述第二类资源满足所述第一应用程序的资源需求。
[0118]
可选的,所述第二类资源不满足所述第一应用程序的资源需求,包括如下至少一项:
[0119]
所述第二类资源中空闲资源量小于所述第一应用程序所需求的资源量;
[0120]
所述第二类资源不包括第一节点的资源,其中,所述第一节点为所述第一应用程序指定的节点。
[0121]
可选的,所述装置还包括:
[0122]
第一控制模块,用于所述根据所述hadoop集群中各个节点的资源使用情况和资源使用场景,调配第一类资源和第二类资源之后,利用调配后的所述第二类资源启动并运行所述第一应用程序;
[0123]
第二调配模块,用于在所述第一应用程序结束运行的情况下,释放所述第一应用程序所占用的节点资源,并调配所述第一类资源和所述第二类资源。
[0124]
可选的,所述第一调配模块,包括:
[0125]
第二调配单元,用于在所述资源使用场景为接收到针对第二应用程序的资源预留请求的情况下,根据所述资源预留请求和所述hadoop集群中各个节点的资源使用情况,调配第一类资源和第二类资源;
[0126]
其中,所述第二应用程序为所述hadoop集群外的应用程序,所述资源预留请求包括请求预留的资源信息和预留时限,在所述预留时限内所述资源信息所指示的资源用于所述第二应用程序。
[0127]
可选的,所述第二调配单元具体用于:
[0128]
在所述资源使用场景为接收到针对第二应用程序的资源预留请求的情况下,根据所述第二应用程序的优先级和预估的在所述预留时限内所述资源信息所指示的资源的使用情况,确定是否为所述第二应用程序预留资源;
[0129]
在确定为第二应用程序预留资源的情况下,根据所述资源预留请求和所述hadoop集群中各个节点的资源使用情况,调配第一类资源和第二类资源。
[0130]
可选的,所述装置还包括:
[0131]
第二控制模块,用于所述在所述资源使用场景为接收到针对第二应用程序的资源预留请求的情况下,根据所述资源预留请求和所述hadoop集群中各个节点的资源使用情况,调配第一类资源和第二类资源之后,在所述预留时限内利用所述资源信息所指示的资源启动并运行所述第二应用程序。
[0132]
资源调配装置300能够实现上述方法实施例的节点资源调配方法的各个过程,并达到相同的效果为避免重复,这里不再赘述。
[0133]
本发明实施例的资源调配装置300,获取模块301,用于获取hadoop集群中各个节点的资源使用情况;第一调配模块302,用于根据资源使用场景和所述hadoop集群中各个节点的资源使用情况,调配第一类资源和第二类资源,其中,所述第一类资源为所述hadoop集群的节点资源中用于所述hadoop集群内的应用程序的资源,所述第二类资源为所述hadoop集群的节点资源中用于所述hadoop集群外的应用程序的资源;调整模块301,用于根据调配后的所述第一类资源调整yarn资源管理器的资源调度器,以使所述资源调度器对调配后的所述第一类资源进行调度。这样可以使得用于所述hadoop集群内的应用程序的资源和用于所述hadoop集群外的应用程序的资源分配更为灵活和合理,进而可以提高资源的利用率。
[0134]
本发明实施例还提供一种资源调配装置,包括处理器、存储器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现上述任一方法实施例的节点资源调配方法的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
[0135]
本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储
有计算机程序,所述计算机程序被处理器执行时实现上述的节点资源调配方法的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。其中,所述的计算机可读存储介质,如只读存储器(read-only memory,简称rom)、随机存取存储器(random access memory,简称ram)、磁碟或者光盘等。
[0136]
参见图4,图4是本发明又一实施提供的资源调配装置的结构图,如图4所示,资源调配装置400包括:处理器401、存储器402及存储在所述存储器402上并可在所述处理器上运行的计算机程序,资源调配装置400中的各个组件通过总线接口403耦合在一起,所述计算机程序被所述处理器401执行时实现如下步骤:
[0137]
获取hadoop集群中各个节点的资源使用情况;
[0138]
根据资源使用场景和所述hadoop集群中各个节点的资源使用情况,调配第一类资源和第二类资源,其中,所述第一类资源为所述hadoop集群的节点资源中用于所述hadoop集群内的应用程序的资源,所述第二类资源为所述hadoop集群的节点资源中用于所述hadoop集群外的应用程序的资源;
[0139]
根据调配后的所述第一类资源调整yarn资源管理器的资源调度器,以使所述资源调度器对调配后的所述第一类资源进行调度。
[0140]
可选的,所述计算机程序被所述处理器401执行时还用于:
[0141]
在所述资源使用场景为接收到第一应用程序的启动请求的情况下,若确定所述第二类资源不满足第一应用程序的资源需求,则根据所述hadoop集群中各个节点的资源使用情况,调配所述第一类资源和所述第二类资源;
[0142]
其中,所述第一应用程序为所述hadoop集群外的应用程序,调配后的所述第二类资源满足所述第一应用程序的资源需求。
[0143]
可选的,所述第二类资源不满足所述第一应用程序的资源需求,包括如下至少一项:
[0144]
所述第二类资源中空闲资源量小于所述第一应用程序所需求的资源量;
[0145]
所述第二类资源不包括第一节点的资源,其中,所述第一节点为所述第一应用程序指定的节点。
[0146]
可选的,所述计算机程序被所述处理器401执行时还用于:
[0147]
所述根据所述hadoop集群中各个节点的资源使用情况和资源使用场景,调配第一类资源和第二类资源之后,利用调配后的所述第二类资源启动并运行所述第一应用程序;
[0148]
在所述第一应用程序结束运行的情况下,释放所述第一应用程序所占用的节点资源,并调配所述第一类资源和所述第二类资源。
[0149]
可选的,所述计算机程序被所述处理器401执行时还用于:
[0150]
在所述资源使用场景为接收到针对第二应用程序的资源预留请求的情况下,根据所述资源预留请求和所述hadoop集群中各个节点的资源使用情况,调配第一类资源和第二类资源;
[0151]
其中,所述第二应用程序为所述hadoop集群外的应用程序,所述资源预留请求包括请求预留的资源信息和预留时限,在所述预留时限内所述资源信息所指示的资源用于所述第二应用程序。
[0152]
可选的,所述计算机程序被所述处理器401执行时还用于:
[0153]
在所述资源使用场景为接收到针对第二应用程序的资源预留请求的情况下,根据所述第二应用程序的优先级和预估的在所述预留时限内所述资源信息所指示的资源的使用情况,确定是否为所述第二应用程序预留资源;
[0154]
在确定为第二应用程序预留资源的情况下,根据所述资源预留请求和所述hadoop集群中各个节点的资源使用情况,调配第一类资源和第二类资源。
[0155]
可选的,所述计算机程序被所述处理器401执行时还用于:
[0156]
所述在所述资源使用场景为接收到针对第二应用程序的资源预留请求的情况下,根据所述资源预留请求和所述hadoop集群中各个节点的资源使用情况,调配第一类资源和第二类资源之后,在所述预留时限内利用所述资源信息所指示的资源启动并运行所述第二应用程序。
[0157]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0158]
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0159]
在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,可以是电性、机械或其它的形式。
[0160]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
[0161]
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
[0162]
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。
[0163]
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1