本发明涉及数据资源调度领域,尤其是一种弹性伸缩支持大数据集群nodemanager资源调度的方法及装置。
背景技术:
1、随着业务的快速发展,hadoop大数据集群规模越来越大,大数据集群对cpu和内存等nodemanager资源的需求也不断增加。这会给大数据集群的可扩展性、nodemanager资源利用率、成本效益和应对突发需求能力带来了挑战,会面临以下一些问题:
2、(1)、扩展性差:传统方式在面对内存和cpunodemanager资源需求的迅速增加时,通常需要采购大量新的物理硬件来满足需求。然而,这种方法会导致系统的可伸缩性和响应能力下降。购买和部署新硬件需要花费时间,并且可能会面临nodemanager资源利用不均衡的问题。
3、(2)、nodemanager资源利用率低:许多应用程序的nodemanager资源使用情况经常出现较大的波动。在高峰期,nodemanager资源需求可能很高,但在低峰期或空闲时间,这些nodemanager资源可能得不到充分利用。这种不稳定的nodemanager资源利用率导致了nodemanager资源的浪费,增加了成本。
4、(3)、nodemanager资源成本高:为了应对高峰负载,必须配置足够的物理nodemanager资源,包括硬件设备、电力供应和冷却设备等基础设施。增加这些nodemanager资源的投入成本可能很高,尤其是在需要满足突发负载的情况下。
5、(4)、nodemanager资源碎片化:由于业务的动态调整和任务的变化,可能会出现大量无法高效利用的nodemanager资源碎片。这些碎片化的nodemanager资源无法组合使用,导致了nodemanager资源利用率的降低。碎片化的nodemanager资源可能会散布在集群中,造成nodemanager资源的浪费。
6、(5)、无法满足突发负载:在业务高峰期或特殊场景下,可能会出现突发的nodemanager资源需求高峰。如果没有灵活的nodemanager资源调度和管理机制,集群将无法及时满足这些突发负载的需求,导致性能下降或任务延迟。
技术实现思路
1、为解决现有技术存在的问题,本发明提供一种弹性伸缩支持大数据集群nodemanager资源调度的方法及装置,通过提高单台物理机的nodemanager资源利用率、控制超额配置的cpu和内存nodemanager资源上限、发现并响应已饱和的机器,驱逐运行的任务等技术手段使得大数据集群nodemanager资源调度可以支持自动弹性伸缩。
2、为实现上述目的,本发明采用下述技术方案:
3、在本发明一实施例中,提出了一种弹性伸缩支持大数据集群nodemanager资源调度的方法,该方法包括:
4、s01、主机负载评估与资源管理,在单台主机上,主机的cpu和内存使用率指标、nodemanager启动container内存与cpu之和占nodemanager计算资源阈值的使用率,两个指标评价主机的负载是否超额;
5、进一步地,所述nodemanager启动container内存与cpu之和占nodemanager计算资源阈值的使用率的计算方式为:nodemanager在启动前,配置可使用的内存大小和cpu核心数的阈值,作为计算资源,计算进程用的最大内存和cpu核心数不会超过配置的阈值;container是nodemanager启动计算任务的基本进程单位,用于任务的计算处理。
6、进一步地,所述s01包括:
7、s011、获取当前机器的cpu和内存使用率以及nodemanager启动container内存与cpu之和占nodemanager计算资源阈值的使用率;
8、s012、判断当前机器的cpu和内存使用率是否低于预设置的第一阈值(threshold1),如果低于第一阈值,表示机器的剩余nodemanager资源较多,会判断为需要提高nodemanager资源配置;
9、进一步地,所述s012中的第一阈值为:可使用的内存大小和cpu核心数的阈值。
10、s013、如当前机器的cpu和内存使用率高于预设置的第一阈值(threshold1),则机器已经饱和,观察nodemanager占机器总使用量的比率;
11、s014、如nodemanager占机器总使用量的比率高于预设置的第二阈值(threshold2),表示在nodemanager资源饱和的机器内,nodemanager任务的nodemanager资源占有量已经超出预期,会判断为需要降低nodemanager资源配置,以抑制后续任务的提交,并记录超过阈值的具体nodemanager资源为memory或cpu,在container驱逐中发挥作用;
12、进一步地,所述s014中的第二阈值为:nodemanager资源饱和的阈值,该阈值用于判断nodemanager的资源使用是否超出了预期的限制,当nodemanager的资源使用率达到或超过这个阈值时,系统会认为nodemanager资源饱和,可能需要采取行动,第二阈值threshold2通常是人工设置的。
13、s015、如nodemanager占机器总使用量的比率低于预设置的第二阈值(threshold2),nodemanager任务的nodemanager资源占有量仍在预期范围内,判断为需要保持当前nodemanager资源配置,并持续观察机器nodemanager资源的后续变化情况。
14、s02、nodemanager资源优化策略,为了实现nodemanager资源的高效利用,进行资源的动态优化;
15、进一步地,所述s02包括:
16、s021、资源量获取,获取yarn集群中每个nodemanager当前的资源量;
17、s022、资源变化量计算,计算nodemanager资源的变化率,并将其乘以当前资源量,以预测本次期望的资源变化量,这个变化量可以是正的,也可以是负的,表示资源的增加或减少。将变化量加到当前资源量上,得到期望调整后的资源量;
18、进一步地,所述s022中的nodemanager资源的变化率为:是yarn集群中nodemanager的资源使用情况随时间的变化比率,该指标衡量资源使用效率,以及预测资源需求的变化趋势。
19、进一步地,所述nodemanager资源的变化率的计算步骤包括:
20、s0221、收集数据,收集nodemanager在不同时间点的资源使用数据,这些数据可能包括cpu使用率、内存使用量、磁盘使用量等;
21、s0222、确定时间范围,选择合适的时间范围,时间范围决于使用者分析的时间尺度;
22、s0223、计算资源使用量的变化:对于每个时间点,计算资源使用量的变化;
23、s0224、计算变化率,计算公式为:变化率=(资源使用量(当前)-资源使用量(之前))/资源使用量(之前))×100%;
24、s0225、平均变化率,分析某段时间内的变化,则计算该段时间内所有变化率的平均值,以得到一个更稳定的指标;
25、s0226、考虑资源使用模式,在计算变化率时,加入资源使用的模式和周期性的因素,例如,某些应用可能在特定时间会有资源使用的高峰;
26、s0227、分析结果,分析计算出的变化率,以确定是否需要调整nodemanager的资源分配。
27、s023、资源量检验。
28、进一步地,所述s023包括:
29、s0231、变化量范围检验,确保变化量不超过预设的上限和下限,上限基于物理机的总资源量和设定的比例(例如cpu上限为物理机总cpu资源的1.2倍),下限则基于nodemanager的配置;
30、s0232、无效波动检验,资源变化量持续在一个小范围内波动,这可能被视为无效波动,系统将拒绝资源调整请求,以避免资源频繁变动;
31、s0233、时间间隔检验,两次资源变化的间隔时间超过设定的阈值(intervalthreshold)时,允许进行资源调整,以减少资源的频繁波动。
32、通过这种方式,能够确保nodemanager资源的动态调整既符合集群的当前需求,又不会导致资源的过度波动或频繁调整。
33、s03、nodemanager资源的自动化管理,根据s01中获取的数据,确定是否需要调整nodemanager的资源分配;如检测到节点资源超配,即资源需求超出了当前分配,应增加资源分配;如nodemanager资源存在闲置,则回收资源以供其他任务使用;
34、进一步地,所述s03中资源分配包括:
35、s0311、节点选择,遍历集群中的所有节点,根据资源量和任务优先级选择适合分配资源的节点,可以通过简单的循环遍历或更复杂的调度算法来实现;
36、s0312、资源量检查,在选择节点后,检查可用的cpu和内存资源是否满足任务需求,如资源不足,需重新选择节点或调整资源分配;
37、s0313、资源分配更新,确定资源分配后,更新节点的资源分配信息,将任务与相应的cpu和内存资源关联起来,以便进行资源管理和监控。
38、进一步地,所述s03中回收资源包括:
39、s0321、任务监测,定期检查或通过事件驱动机制监测任务的运行状态,识别空闲或低优先级的任务;
40、s0322、空闲状态判断,检查任务是否已完成或处于暂停状态,上述状态的任务不再需要占用nodemanager资源;
41、s0323、资源量比较,对空闲任务,比较其占用的cpu和内存资源量与预设的回收阈值,如果资源占用低于阈值,则回收资源;
42、s0324、资源释放,确定回收资源的任务,释放其占用的cpu和内存资源;
43、s0325、资源分配信息更新,完成资源回收后,更新节点的资源分配信息,将回收的资源标记为可用,重新分配。
44、通过这种自动化的资源管理策略,可以有效地提高yarn集群的资源利用率,确保资源按需分配,并及时回收闲置资源,从而优化整个集群的性能和效率。
45、s04、nodemanager资源饱和的识别与处理,通过持续监控集群状态,及时发现资源饱和的nodemanager机器,资源饱和会影响集群的稳定运行,因此需要及时处理。
46、进一步地,所述s04包括:
47、s041、资源饱和识别,nodemanager占用的资源比例超过预第二设阈值(threshold2),nodemanager任务的资源占用已经超出预期,需措施降低资源配置;
48、s042、资源配置调整原因分析,分析导致资源配置需要降低的原因,如果原因是内存使用率上升,进一步判断当前内存使用率是否达到内存的预设阈值;
49、s043、container驱逐策略,内存使用率超过阈值,将触发container驱逐机制;
50、进一步地,所述s043驱逐过程遵循的规则包括:
51、s0431、获取所有container的cpu或内存实际使用量,并按使用量从高到低排序;
52、s0432、根据排序结果,从使用量最高的container开始逐一进行驱逐,直到资源使用量降至安全阈值以下;
53、s0433、在驱逐过程中,将跳过高优先级或特定队列中的container,以避免影响关键任务。
54、s044、驱逐原因区分,container被驱逐为节点资源压力,而非container本身的问题,yarn的nmwebservice(nodemanager web服务)增加了专门的api和标识;
55、s045、任务失败处理,spark和hive等框架进行改进,识别由驱逐导致的container失败,并跳过失败次数累积逻辑,允许任务重试。这避免了因连续失败次数过多而导致的作业失败。
56、在本发明一实施例中,还提出了一种弹性伸缩支持大数据集群nodemanager资源调度的装置,该装置包括:
57、主机负载评估与资源管理模块,在单台主机上,主机的cpu和内存使用率指标、nodemanager启动container内存与cpu之和占nodemanager计算资源阈值的使用率,两个指标评价主机的负载是否超额;
58、nodemanager资源优化策略模块,为了实现nodemanager资源的高效利用,进行资源的动态优化;
59、nodemanager资源的自动化管理模块,根据s01中获取的数据,确定是否需要调整nodemanager的资源分配;如检测到节点资源超配,即资源需求超出了当前分配,应增加资源分配;如nodemanager资源存在闲置,则回收资源以供其他任务使用;
60、nodemanager资源饱和的识别与处理模块,通过持续监控集群状态,及时发现资源饱和的nodemanager机器,资源饱和会影响集群的稳定运行,因此需要及时处理。
61、在本发明一实施例中,还提出了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现前述弹性伸缩支持大数据集群nodemanager资源调度的方法。
62、在本发明一实施例中,还提出了一种计算机可读存储介质,计算机可读存储介质存储有执行弹性伸缩支持大数据集群nodemanager资源调度的方法的计算机程序。
63、有益效果:
64、本发明一种弹性伸缩支持大数据集群nodemanager资源调度的方法及装置,能够优化nodemanager资源利用、降低成本,提高集群的可伸缩性和响应能力。通过智能的超配判断、精准的nodemanager资源计算和自动化的nodemanager资源调配,可以实现动态优化nodemanager资源分配,提升系统性能和效率;及时响应机器饱和情况,保证任务的稳定执行。避免nodemanager资源紧张导致的性能下降和任务延迟,提高整体系统的可靠性和稳定性。
1.一种弹性伸缩支持大数据集群nodemanager资源调度的方法,其特征在于,该方法包括:
2.根据权利要求1所述的弹性伸缩支持大数据集群nodemanager资源调度的方法,其特征在于,所述nodemanager启动container内存与cpu之和占nodemanager计算资源阈值的使用率的计算方式为:nodemanager在启动前,配置可使用的内存大小和cpu核心数的阈值,作为计算资源,计算进程用的最大内存和cpu核心数不会超过配置的阈值;container是nodemanager启动计算任务的基本进程单位,用于任务的计算处理。
3.根据权利要求1所述的弹性伸缩支持大数据集群nodemanager资源调度的方法,其特征在于,所述s01包括:
4.根据权利要求3所述的弹性伸缩支持大数据集群nodemanager资源调度的方法,其特征在于,所述s012中的第一阈值为:可使用的内存大小和cpu核心数的阈值。
5.根据权利要求3所述的弹性伸缩支持大数据集群nodemanager资源调度的方法,其特征在于,所述s014中的第二阈值为:nodemanager资源饱和的阈值,该阈值用于判断nodemanager的资源使用是否超出了预期的限制,当nodemanager的资源使用率达到或超过这个阈值时,系统会认为nodemanager资源饱和,可能需要采取行动,第二阈值是人工设置的。
6.根据权利要求1所述的弹性伸缩支持大数据集群nodemanager资源调度的方法,其特征在于,所述s02包括:
7.根据权利要求6所述的弹性伸缩支持大数据集群nodemanager资源调度的方法,其特征在于,所述s022中的nodemanager资源的变化率为:是yarn集群中nodemanager的资源使用情况随时间的变化比率,该指标衡量资源使用效率,以及预测资源需求的变化趋势。
8.根据权利要求6所述的弹性伸缩支持大数据集群nodemanager资源调度的方法,其特征在于,所述nodemanager资源的变化率的计算步骤包括:
9.根据权利要求6所述的弹性伸缩支持大数据集群nodemanager资源调度的方法,其特征在于,所述s023包括:
10.根据权利要求1所述的弹性伸缩支持大数据集群nodemanager资源调度的方法,其特征在于,所述s03中资源分配包括:
11.根据权利要求1所述的弹性伸缩支持大数据集群nodemanager资源调度的方法,其特征在于,所述s03中回收资源包括:
12.根据权利要求1所述的弹性伸缩支持大数据集群nodemanager资源调度的方法,其特征在于,所述s04包括:
13.根据权利要求12所述的弹性伸缩支持大数据集群nodemanager资源调度的方法,其特征在于,所述s043驱逐过程遵循的规则包括:
14.一种弹性伸缩支持大数据集群nodemanager资源调度的装置,其特征在于,该装置包括:
15.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1-13任一项所述方法。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求1-13任一项所述方法的计算机程序。
