一种集群资源管理调度方法、装置、设备及可读存储介质与流程

文档序号:25420178发布日期:2021-06-11 21:31阅读:43来源:国知局
一种集群资源管理调度方法、装置、设备及可读存储介质与流程

本申请涉及计算机技术领域,特别涉及一种集群资源管理调度方法、装置、设备及可读存储介质。



背景技术:

在没有引入资源管理的任务运行系统中,一般都是通过任务并发度控制集群资源的使用。这种方式有很多缺点,如:没有进行整个集群的资源监控,不知道总体资源用了多少,不能预估出符合当前任务量的机器个数和配置;在总体资源使用吃紧的时候,不能很直观表现出来,导致机器负载过高;没有对单个任务资源使用的监控,获取不到资源指标,导致任务优化困难。

可见,目前缺少对集群资源的管理方案,因此无法得知集群资源使用情况,导致资源无法被充分利用或机器过载。



技术实现要素:

本申请的目的是提供一种集群资源管理调度方法、装置、设备及可读存储介质,用以解决目前无法得知集群资源使用情况,导致资源无法被充分利用或机器过载的问题。其具体方案如下:

第一方面,本申请提供了一种集群资源管理调度方法,包括:

利用资源调度器将集群资源划分为多个资源池;

设置离线任务的最大资源使用量、优先级和资源池属性;

在任务队列未满时,将所述离线任务按照所述优先级添加至所述任务队列;

对于所述任务队列中的每一个离线任务,通过资源管理器查询可用资源量是否大于等于所述最大资源使用量;

若是,则将所述离线任务根据所述资源池属性提交至相应的资源池。

优选的,所述利用资源调度器将集群资源划分为多个资源池,包括:

利用资源调度器将集群资源按照任务类型或工作环境划分为多个资源池。

优选的,在所述利用资源调度器将集群资源划分为多个资源池之后,还包括:

设置每个所述资源池的参数,所述参数包括以下任意一项或多项:最小可用资源、最大可用资源、资源分配权重、最大可运行应用数量、权限用户。

优选的,所述将所述离线任务根据所述资源池属性提交至相应的资源池,包括:

将所述离线任务的任务脚本、运行命令以及根据所述最大资源使用量确定的资源请求封装成jar包,并提交至所述资源池属性对应的资源池。

优选的,在所述将所述离线任务根据所述资源池属性提交至相应的资源池之后,还包括:

在运行所述离线任务的同时,生成运行日志,其中所述运行日志包括以下任意一项或多项:离线任务的执行状态、用于运行离线任务的计算节点的工作状态、离线任务的资源使用情况。

优选的,在所述在运行所述离线任务的同时,生成运行日志之后,还包括:

根据所述运行日志,对所述离线任务的最大资源使用量进行调整。

优选的,在所述将所述离线任务根据所述资源池属性提交至相应的资源池之后,还包括:

在运行所述离线任务的同时,通过资源管理器查询集群资源利用率;

根据所述集群资源利用率,动态增加或减少计算节点。

第二方面,本申请提供了一种集群资源管理调度装置,包括:

资源划分模块:用于利用资源调度器将集群资源划分为多个资源池;

任务设置模块:用于设置离线任务的最大资源使用量、优先级和资源池属性;

任务添加模块:用于在任务队列未满时,将所述离线任务按照所述优先级添加至所述任务队列;

条件判断模块:用于对于所述任务队列中的每一个离线任务,通过资源管理器查询可用资源量是否大于等于所述最大资源使用量;

任务提交模块:用于在可用资源量大于等于所述最大资源使用量时,将所述离线任务根据所述资源池属性提交至相应的资源池。

第三方面,本申请提供了一种集群资源管理调度设备,包括:

存储器:用于存储计算机程序;

处理器:用于执行所述计算机程序,以实现如上所述的集群资源管理调度方法。

第四方面,本申请提供了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时用于实现如上所述的集群资源管理调度方法。

本申请所提供的一种集群资源管理调度方法,能够利用资源调度器将集群资源划分为多个资源池;设置离线任务的最大资源使用量、优先级和资源池属性;在任务队列未满时,将离线任务按照优先级添加至任务队列;对于任务队列中的每一个离线任务,通过资源管理器查询可用资源量是否大于等于最大资源使用量;若是,则将离线任务根据资源池属性提交至相应的资源池。

可见,该方法能够将整个集群资源划分为多个资源池,保证不同资源池属性的离线任务在不同的资源池上运行,实现任务隔离,保证不同资源池属性的任务都能顺利进行。此外,该方法设置了任务队列和任务优先级,既能控制总任务的并发量,又能保证高优先级的任务优先执行,保证提升资源利用率。最终,该方法通过设置任务的最大资源使用量,当且仅当可用资源量大于等于任务的最大资源使用量时才提交任务到任务池,避免了集群负载过大的问题,提升了集群的可靠性。

此外,本申请还提供了一种集群资源管理调度装置、设备及可读存储介质,其技术效果与上述方法的技术效果相对应,这里不再赘述。

附图说明

为了更清楚的说明本申请实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请所提供的集群资源管理调度方法实施例一的实现流程图;

图2为本申请所提供的集群资源管理调度方法实施例二的实现流程图;

图3为本申请所提供的集群资源管理调度方法实施例二的过程示意图;

图4为本申请所提供的集群资源管理调度装置实施例的功能框图。

具体实施方式

本申请的核心是提供一种集群资源管理调度方法、装置、设备及可读存储介质,通过将整个集群资源划分为多个资源池,保证不同资源池属性的离线任务在不同的资源池上运行,实现任务隔离;通过设置任务队列和任务优先级,控制总任务的并发量,保证高优先级的任务优先执行;通过设置任务的最大资源使用量,当且仅当可用资源量大于等于任务的最大资源使用量时才提交任务到任务池,避免了集群负载过大的问题。

为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

下面对本申请提供的集群资源管理调度方法实施例一进行介绍,参见图1,实施例一包括:

s101、利用资源调度器将集群资源划分为多个资源池。

具体的,可以按照工作环境或任务类型对集群资源(内存和cpu等)进行划分,例如,根据工作环境对集群资源进行划分,可以划分为测试资源池、补跑任务资源池、正式任务资源池等;根据任务类型对集群资源进行划分,可以划分为清洗任务资源池、导入导出任务资源池等。

根据工作环境划分可以防止互相干扰,如在线上测试的时候使用测试资源池,不占用正式任务资源池。而根据任务类型划分时,有利于限制不同类型任务占用总资源的比例,防止某个类型任务占用过大,阻碍其他类型的任务运行。

上述资源调度器具体可以为fairscheduler,fairscheduler除了可以将整个集群资源划分为多个资源池之外,还可以设置每个资源池的参数,例如最小可用资源、最大可用资源、资源分配权重、最大可运行应用数量、权限用户等。其中,权限用户是指可以提交和管理应用的用户;而资源分配权重是指在有任务等待时一个资源池可以获得的资源量与全部可用资源的比值,假设可用资源是100%,资源池a的资源分配权重是30%,那么,当资源池a请求资源时则最多可以请求30%的可用资源。

也就是说,每个资源池可以根据资源分配权重获得不同比例的可用资源,需要说明的是,这里的资源分配权重只是一个经验值,实际应用中资源池占用的资源是灵活可变的。如一个集群有2个资源池,分别为资源池a和资源池b。资源池a的资源分配权重为30%,资源池b的资源分配权重为70%,已知一个任务只能在一个资源池内运行,如任务1运行在资源池a,正常情况下,任务1只能使用资源池a内的所有资源,但如果资源池b有空闲,那么资源池a可以从资源池b借走一部分资源供任务1使用,任务完成后再归还。

s102、设置离线任务的最大资源使用量、优先级和资源池属性。

针对离线任务,本实施例设置有任务队列和优先级。任务队列用于控制总任务量的并发,任务优先级用于保证在任务积压情况下,让重要任务先运行。

此外,本实施例还设置了离线任务的最大资源使用量和资源池属性,其中资源池属性用于限制离线任务落入哪一个资源池或哪一类资源池;最大资源使用量用于限制离线任务运行期间占用的资源量,该参数是可调整的,可以根据实际需求调大或调小。

s103、在任务队列未满时,将所述离线任务按照所述优先级添加至所述任务队列。

在总并发量一定的情况下,将各个离线任务按照优先级从高到低的顺序进行排列,将优先级最高的n个离线任务添加至任务队列,其中n为集群的总并发量。

s104、对于所述任务队列中的每一个离线任务,通过资源管理器查询可用资源量是否大于等于所述最大资源使用量;若是,则进入s105。

上述资源管理器具体可以为yarn,用于实现集群资源申请和任务分发。当然,也可以选用mesos作为本实施例的资源调度器,mesos可以接入mapreduce和spark等组件,兼容目前各种离线开发任务。

s105、将所述离线任务根据所述资源池属性提交至相应的资源池。

具体的,将离线任务的任务脚本、运行命令以及根据最大资源使用量确定的资源请求封装成jar包,并提交至资源池属性对应的资源池。

在运行离线任务的过程中,可以对离线任务的资源占用情况进行监控,后续可以据此调整离线任务的最大资源使用量;还可以对集群整体的资源占用率进行监控,据此可以增加或减少集群中的计算节点。

本实施例所提供一种集群资源管理调度方法,能够将整个集群资源划分为多个资源池,保证不同资源池属性的离线任务在不同的资源池上运行,实现任务隔离,保证不同资源池属性的任务都能顺利进行。此外,该方法设置了任务队列和任务优先级,既能控制总任务的并发量,又能保证高优先级的任务优先执行,保证提升资源利用率。最终,该方法通过设置任务的最大资源使用量,当且仅当可用资源量大于等于任务的最大资源使用量时才提交任务到任务池,避免了集群负载过大的问题,提升了集群的可靠性。

下面开始详细介绍本申请提供的集群资源管理调度方法实施例二,实施例二基于前述实施例一实现,并在实施例一的基础上进行了一定程度上的拓展。

参见图2和图3,实施例二具体包括:

s201、利用资源调度器fairscheduler将集群资源按照任务类型划分为多个资源池,设置每个资源池的最小可用资源、最大可用资源、资源分配权重、最大可运行应用数量、权限用户。

设置多个资源池,目的在于让不同类型的任务在不同资源池上运行,不相互影响。如,导入导出任务和日志清洗任务这些基础任务放在2个资源池,让任务都获取相应的资源尽早执行。

s202、开发离线任务,编写任务脚本,并设置离线任务的最大资源使用量、优先级和任务类型。

s203、在任务队列未满时,将离线任务按照优先级添加至任务队列。

具体的,在一定触发条件下,将开发好的离线任务添加至任务队列,这里的触发条件可以为手动触发也可以为定时触发。根据状态机判断是否满足触发条件,如果满足,则从任务池中选出优先级最高的任务,并添加至任务队列。

s204、对于任务队列中的每一个离线任务,通过资源管理器yarn查询可用资源量是否大于等于最大资源使用量;若是,则进入s205。

也就是说,任务运行前,先按照优先级进入任务队列,再检查是否有离线任务运行需要的资源环境,如:判断集群的可用资源是否足够,查询任务状况是否正常,判断目标资源池是否能够满足任务需求等。一切必要条件满足后,任务才会到提交阶段。

s205、在可用资源量大于等于最大资源使用量时,将离线任务的任务脚本、运行命令以及根据所述最大资源使用量确定的资源请求封装成jar包,并提交至与上述任务类型对应的资源池。

上述jar包用于生成yarn的appmaster,通过yarn的客户端提交到yarn的指定资源池去执行。

s206、在运行离线任务的同时,通过资源管理器yarn查询集群资源利用率,生成运行日志。

其中运行日志包括以下任意一项或多项:错误信息(hive任务内存溢出等)、离线任务的执行状态、用于运行离线任务的计算节点的工作状态、离线任务的资源使用情况(hive等任务会有map和reduce的个数)。

具体的,任务的appmaster会在指定的计算节点上执行任务脚本,与此同时,实时监控任务执行状态和节点工作状态,并将任务执行状态与server节点同步实现任务状态流转,生成任务日志和资源使用汇总信息,放到nfs系统上,用于后面的错误查询和任务分析。

具体的,通过任务在yarn的appid,到yarn上查询获取任务的资源使用量(内存、cpu、mapreduce个数、读取文件的总量等信息),并记录到系统中,为任务资源查询和优化提供依据。

s207、根据运行日志,对离线任务的最大资源使用量进行调整。

s208、根据集群资源利用率,动态增加或减少计算节点。

本实施例中,根据任务运行过程中的监控数据实现两方面的优化,一是任务优化,二是集群资源优化,如下所示:

任务优化:任务运行时会生成日志信息,如每个app使用的资源量,所以在系统中可以查看任务的资源使用情况,找出资源使用过大的任务,进行任务优化,如hive可以通过调整sql写法减少资源使用。

集群资源优化:通过资源监控接口,可以获取近期的整体集群资源利用率,如集群在各个时间段负载情况,从而判断集群内存和cpu的配比是否合理;又如资源是否不足还是过剩,如果资源使用不充分,则可以下线计算节点,如果资源不够可以扩容计算节点。通过适当的调整任务运行中cpu与内存的比例让资源充分利用,增加减少计算节点数量来满足离线任务的需求。并且资源的上线下线对调度平台是无感知的,不会影响任务的运行,不需要重启调度系统的任何服务。

可见,本实施例提供的集群资源管理调度方法,使用yarn作为资源管理器,基于fairschedule进行资源隔离和调度,实现集群资源监控以及单个任务使用资源监控等功能。具体的,在任务开发时设置任务要使用的资源总量,任务提交的时候通过查询资源管理器确定可用资源,如果可用资源充足,则提交任务,并且监控任务要使用资源量,及时发现资源消耗过大任务,为后面任务优化提供指标依据,从而降低成本。

下面对本申请实施例提供的一种集群资源管理调度装置进行介绍,下文描述的一种集群资源管理调度装置与上文描述的一种集群资源管理调度方法可相互对应参照。

如图4所示,本实施例的集群资源管理调度装置,包括:

资源划分模块401:用于利用资源调度器将集群资源划分为多个资源池;

任务设置模块402:用于设置离线任务的最大资源使用量、优先级和资源池属性;

任务添加模块403:用于在任务队列未满时,将所述离线任务按照所述优先级添加至所述任务队列;

条件判断模块404:用于对于所述任务队列中的每一个离线任务,通过资源管理器查询可用资源量是否大于等于所述最大资源使用量;

任务提交模块405:用于在可用资源量大于等于所述最大资源使用量时,将所述离线任务根据所述资源池属性提交至相应的资源池。

本实施例的集群资源管理调度装置用于实现前述的集群资源管理调度方法,因此该装置中的具体实施方式可见前文中的集群资源管理调度方法的实施例部分,例如,资源划分模块401,任务设置模块402,任务添加模块403,条件判断模块404,任务提交模块405,分别用于实现上述集群资源管理调度方法中步骤s101,s102,s103,s104,s105。所以,其具体实施方式可以参照相应的各个部分实施例的描述,在此不再展开介绍。

另外,由于本实施例的集群资源管理调度装置用于实现前述的集群资源管理调度方法,因此其作用与上述方法的作用相对应,这里不再赘述。

此外,本申请还提供了一种集群资源管理调度设备,包括:

存储器:用于存储计算机程序;

处理器:用于执行所述计算机程序,以实现如上文所述的集群资源管理调度方法。

最后,本申请提供了一种可读存储介质,所述可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时用于实现如上文所述的集群资源管理调度方法。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上对本申请所提供的方案进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1