一种Presto资源管理优化方法、系统、设备及介质与流程

文档序号:35376765发布日期:2023-09-08 19:02阅读:90来源:国知局
一种Presto资源管理优化方法、系统、设备及介质与流程

本发明涉及查询引擎领域,具体而言,涉及一种presto资源管理优化方法、系统、设备及介质。


背景技术:

1、presto是一个典型的mpp架构的分布式sql查询引擎,查询数据量能够覆盖gb到pb级别。与hive、spark不同的是,presto是一个全内存计算的引擎,所以能够快速获取结果,因此也特别适合adhoc查询、数据探查、bi报表等多种业务场景。但是由于presto天然不是多租户的架构,使得所有查询所用的内存、cpu资源都在同一个集群中进行争抢,所以对presto集群资源进行有效管控就显得尤为重要了,目前社区版本的presto提供了resourcegroup机制来管控集群资源的使用。

2、图1为resourcegroup在sql执行过程中进行资源管理的简单流程,通过resourcegroupmanager间隔1ms对所有group中运行的query信息进行统计得到内存使用、cpu使用以及并发数等信息。一旦这些统计信息超过了分配给group的阈值,那么后续提交到当前group的query便会进入到queue中,等待group有足够的资源。其中内存使用量和并发数校验相对比较实时,能够比较准确的统计出当前group实际使用量。但是对于cpu使用量的统计是在resourcegroup中,并不是实时计算的,每次都是要等query执行完成才会更新cpu使用量,相较于实时更新的cpu配额有一定的滞后。而且一旦query满足当前查询限制条件后,便不受到resourcegroup的控制了,也就是说resourcegroup是一种事前的检验。假设在某个时间段集中往某个group中发送了大量的查询,由于统计cpu使用量的滞后性,导致这些query都通过了资源组的cpu校验,顺利开始执行,这样还是很容易对集群负载造成很大的压力,因此对于实时运行中的query进行资源控制显得尤为重要。

3、从上面的分析中如果对某个group使用不当就会出现过量使用资源的情况,那么此时还会影响到别的group资源的使用。假设每个用户对应一个group,那么presto就可以理解为一个多租户的查询系统,每个用户所能够使用的集群资源也可以进行配置,但是由于缺少实时管控运行中query的资源控制,就会出现某些用户过量使用集群资源的情况,使得其他用户的正常查询受到影响。


技术实现思路

1、本发明的目的在于提供一种presto资源管理优化方法、系统、设备及介质,通过优化完善presto在实时运行中query的资源使用控制,从而可以有效提升集群的稳定性。

2、本发明的实施例是这样实现的:

3、第一方面,本技术实施例提供一种presto资源管理优化方法,包括以下步骤:

4、实时统计每个group消耗的cpu时间,得到对应group累计消耗的cpu时间。基于每个group累计消耗的cpu时间与预置的hardcpulimit资源限制的对比关系,建立预设惩罚机制对该group实施惩罚算法计算,并基于惩罚算法计算的计算结果将该group划分入第一可调度组或第一候选惩罚组。基于第一候选惩罚组对相应的group实施补偿算法计算,并基于补偿算法计算的计算结果利用第一可调度组和第一候选惩罚组重组得到第二可调度组和第二候选惩罚组。基于第二可调度组和第二候选惩罚组构成的总队列依次利用任务执行器进行提取相应的group。判断提取的group是否在第二候选惩罚组中,并基于判断结果建立预设处理机制控制当前提取的group返回总队列或进行执行处理。

5、在本发明的一些实施例中,上述预设惩罚机制具体包括:若group累计消耗的cpu时间大于hardcpulimit资源限制的a倍但小于b倍,则加大当前group的下一次被惩罚的概率,若group累计消耗的cpu时间大于等于hardcpulimit资源限制的b倍,则对当前group中的query进行限制处理,其中a为大于等于1的正数,b为大于a的正数。

6、在本发明的一些实施例中,上述补偿算法计算包括基于高斯分布进行概率补偿。

7、在本发明的一些实施例中,上述补偿算法计算具体包括:

8、记第一候选惩罚组中的group仍然被惩罚的概率分布为p(x)=gauss[cpuusepersecond(i)],则当前group被补偿成功的概率分布为1-p(x),其中,cpuusepersecond(i)为第i个group在当前这一秒消耗的cpu;其高斯分布的均值计算公式为:其中μ为均值,punishlimitpergroup(i)为第i个group对应的cpu每秒恢复的速率配额;其高斯分布的方差计算公式为:其中δ为方差,cputotalusepercroup(i)为第i个group累计消耗的cpu,cputotaluseallgroup为所有group累计消耗cpu之和。

9、在本发明的一些实施例中,上述基于判断结果建立预设处理机制控制当前提取的group返回总队列或进行执行处理的步骤包括:若判断结果为否,则创建对应的driver按照预设的时间片进行执行处理,若在预设的时间片内未执行完成,则进行退回队列处理。

10、第二方面,本技术实施例提供一种presto资源管理优化系统,其包括:

11、消耗统计模块,用于实时统计每个group消耗的cpu时间,得到对应group累计消耗的cpu时间。惩罚处理模块,用于基于每个group累计消耗的cpu时间与预置的hardcpulimit资源限制的对比关系,建立预设惩罚机制对该group实施惩罚算法计算,并基于惩罚算法计算的计算结果将该group划分入第一可调度组或第一候选惩罚组。补偿处理模块,用于基于第一候选惩罚组对相应的group实施补偿算法计算,并基于补偿算法计算的计算结果利用第一可调度组和第一候选惩罚组重组得到第二可调度组和第二候选惩罚组。资源提取模块,用于基于第二可调度组和第二候选惩罚组构成的总队列依次利用任务执行器进行提取相应的group。执行处理模块,用于判断提取的group是否在第二候选惩罚组中,并基于判断结果建立预设处理机制控制当前提取的group返回总队列或进行执行处理。

12、第三方面,本技术实施例提供一种电子设备,其包括存储器,用于存储一个或多个程序;处理器。当上述一个或多个程序被上述处理器执行时,实现如上述第一方面中任一项上述的方法。

13、第四方面,本技术实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述第一方面中任一项上述的方法。

14、相对于现有技术,本发明的实施例至少具有如下优点或有益效果:

15、通过引入惩罚算法,对高消耗group进行实时惩罚,提高了集群的稳定性,并且通过引入补偿算法,完善了惩罚算法带来的惩罚偏向,在集群资源充足的情况下,能够有效利用集群资源。即,在集群资源紧张时,可以抑制住cpu消耗高的group,让cpu消耗低的group尽快执行,保证集群的稳定,避免资源超量使用导致oom的发生;在集群资源空闲时,即使对于group中执行了较多sql,增加了被惩罚的可能性,但是又通过补偿算法的补偿,使得group能够有较多的机会去执行,避免了惩罚偏向。另外,由于现有的presto中使用单一调度队列进行调度,那么在架构设计层面存在资源争抢问题,其通过基于resourcegroup的调度方式完成架构层面的资源隔离,可以将资源隔离级别精准到group级别。

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