发明内容
为了解决上述技术问题,本发明的目的在于提供大数据数据治理任务运行方法,所采用的技术方案具体如下:
本发明一个实施例提供了大数据数据治理任务运行方法,该方法包括以下步骤:
构建数据治理应用程序,将所述数据治理应用程序部署到无服务器计算平台中,所述无服务器计算平台包含多个容器;
根据所述无服务器计算平台获取实时的每个容器CPU资源利用率;利用指数移动平均法对所述实时的每个容器CPU资源利用率进行负载跟踪,得到每一时刻的指数移动平均数;
设置最大负载追踪器长度,根据所述每一时刻的指数移动平均数获取最大负载追踪器序列;根据最大负载追踪器序列中的序列值获取变化度量;根据所述变化度量获取最优的负载追踪器序列长度;根据所述最优的负载追踪器序列长度获取最近指数移动平均数序列;对所述最近指数移动平均数序列利用线性外推预测法获取未来时刻的CPU利用率;
构建保底机制,基于所述保底机制获取最合适的未来时刻CPU利用率;
将上述CPU自动缩放方法进行集成,以使服务器可以动态调整容器CPU资源。
优选的,所述无服务器计算平台使用Kubernetes引擎来构建。
优选的,所述实时的每个容器CPU资源利用率的获取方法为:利用Kubernetes引擎中的cAdvisor进行资源使用的实时监控。
优选的,所述根据最大负载追踪器序列中的序列值获取变化度量的方法为:
设置最大负载追踪器长度,然后获取当前时刻及前面时刻的指数移动平均值,组成最大负载追踪器序列;
对最大负载追踪器序列进行波动分解,得到最大负载追踪器周期分量序列、最大负载追踪器余项分量序列;并获取最大负载追踪器周期分量序列、最大负载追踪器余项分量序列中每个序列值的对比度、熵;
根据最大负载追踪器周期分量序列、最大负载追踪器余项分量序列中每个序列值的对比度、熵获取得到最大负载追踪器序列中每个序列值的变化度量。
优选的,所述最大负载追踪器周期分量序列、最大负载追踪器余项分量序列中每个序列值的对比度、熵的获取方法为:
对于分量中的每一个序列值,获取其左、右相邻一定长度的序列值,然后将序列值与左、右相邻的一定长度的序列值组成一个局部分量序列,然后利用Kmeans算法对该局部分量序列进行分组,根据每个序列值的所属组的代号,赋值到局部度量序列中的每个序列值上,得到局部分组序列;
根据局部分组序列中每个组的概率计算局部度量序列的熵;
对于局部分组序列进行共现概率计算,度量每两个相邻数值对出现的概率,最终可得非重复共现对,基于所述非重复共现对计算对比度:
表示U个分组情况下的非重复共现对的数学排列组合数量,i
z1、j
z1表示第Z1个非重复共现对的数值,p(z1)表示第Z1类非重复共现对的在所有非重复共现对中的比例。
优选的,所述最近指数移动平均数序列的获取方法为:
采用迭代的方式获取最优的负载追踪器长度,此处设置最小负载追踪器的长度,然后以时间最近为原则,迭代求取长度为最小负载追踪器的长度到最大负载追踪器的长度之间每个长度序列的变化度量,选取第一个转折点时的序列长度作为最优负载追踪器序列的长度;所述第一个转折点定义为该序列长度的变化度量小于下一个序列长度的变化度量。
优选的,所述利用线性外推预测法获取未来时刻的CPU利用率的方法为:
q为最优负载追踪器序列的长度,k表示预测步长,li、li-q分别表示第i时刻、第i-q时刻的指数移动平均值,P1(li+1)表示预测的第i+1时刻的CPU利用率。
优选的,所述基于所述保底机制获取最合适的未来时刻CPU利用率的方法为:
P2(li+1)表示预测最合适的第i+1时刻的CPU利用率,Max为取最大操作,β为映射系数,q表示为最优负载追踪器序列长度,lu表示最近指数移动平局数序列的第u个值。
优选的,所述对CPU自动缩放方法进行集成的方式为:自动缩放算法集成到垂直Pod自动扩缩容推荐组件中,通过使用自定义自动缩放算法配置VPA,从而使VPA能够提供一种动态调整容器CPU资源请求大小的机制。
本发明具有如下有益效果:
本发明方法设计了一种保底机制,保证CPU资源预测不会迅速、意外地下降。同时本方法基于EMA算法,具有计算复杂度低的优点,因此适用于无服务器函数的小型自动缩放,同时保持了良好的预测结果。
线性外推预测可确保预测值在CPU使用率达到峰值时突然上升,增大CPU资源自动缩放的效率。
本发明方法对短时间、突然的工作负载变化敏感,适合无服务器工作负载在短时间内运行的工作状态。
具体实施方式
为了更进一步阐述本发明为达成预定发明目的所采取的技术手段及功效,以下结合附图及较佳实施例,对依据本发明提出的大数据数据治理任务运行方法,其具体实施方式、结构、特征及其功效,详细说明如下。在下述说明中,不同的“一个实施例”或“另一个实施例”指的不一定是同一实施例。此外,一或多个实施例中的特定特征、结构、或特点可由任何合适形式组合。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。
下面结合附图具体的说明本发明所提供的大数据数据治理任务运行方法的具体方案。
请参阅图1,其示出了本发明大数据数据治理任务运行方法,其特征在于,该方法包括以下步骤:
步骤001,构建数据治理应用程序,将所述数据治理应用程序部署到无服务器计算平台中,所述无服务器计算平台包含多个容器。
首先构建数据治理应用程序,所述数据治理包含多种类型的应用程序,如数据成本应用程序(如计算或数据扫描)、数据质量应用程序、数据安全应用程序、数据建模应用程序、数据价值应用程序、数据服务应用程序。
其中数据治理对数据资产的管理活动行使权力和控制的活动集合(规划,监控和执行),是组织为实现数据资产最大化所开展的一系列工作,所述数据治理应用程序由数据相关方进行开发构建。
然后将数据治理应用程序部署到无服务器计算平台中,所述无服务器计算平台使用Kubernetes引擎来构建。所述Kubernetes是一个全新的基于容器技术的分布式架构解决方案,是Google开源的一个容器集群管理系统,其构建为本领域技术人员周知的,这里不再赘述。
在无服务器计算平台中,供应商在一台服务器上运行多达数千个无服务器容器,以利用规模经济来提高资源利用率。在这些容器上运行的大多数函数都是短期运行的,很少被调用。然而,提供者在调用完成后会保留容器,以改善未来调用的冷启动延迟或预测何时调用函数来预热容器。资源分配器和调度器还考虑分配给空闲容器的资源,即使它们可能不被使用。因此,分配了大量CPU的空闲容器可能会导致服务器整体利用率不足。因此平台的核心是要动态的进行资源分配,保证资源分配的合理,目前对于自动缩放实现动态CPU分配,大多研究是使用基于历史数据的预测技术对长期运行的应用程序进行CPU资源的自动缩放。然而,无服务器应用程序是短期运行的工作负载,这类技术并不适合。
在一台服务器上运行数千个函数会导致CPU资源利用率问题,在无服务器环境中,CPU分配是静态的,对用户来说是不透明的,与分配的内存量成比例。因此,非技术用户很难为给定的应用程序实现良好的CPU分配。尽管其运行时间很短,但无服务器功能显示出动态且不平稳的资源使用情况,这使得其使用者很难正确估计从云提供商请求的资源量。
步骤002,根据所述无服务器计算平台获取实时的每个容器CPU资源利用率;利用指数移动平均法对所述实时的每个容器CPU资源利用率进行负载跟踪,得到每一时刻的指数移动平均数。
利用Kubernetes引擎进行资源使用的监控。资源监控数据由cAdvisor收集。cAdvisor是一个谷歌开发的容器监控工具,它被内嵌到Kubernetes中作为监控组件。cAdvisor可以收集机器上所有运行容器的信息,包括CPU使用情况、内存使用情况等。监控的资源值都以精细的粒度以每秒一次进行监控,并将监控数据实时存储在数据库中。此处主要获取每个容器的CPU实时使用情况。
根据每个容器的CPU使用情况进行分析:
对于每个容器都有其实时的CPU使用情况,此处使用情况为所用CPU的利用率。
然后构建负载跟踪器进行负载追踪,优选方法采用指数移动平均(EMA)方法,该方法计算简单,可以很好地降低延迟效应。指数移动平均(EMA)是集合中n+1个CPU使用率值的加权平均值,观察值的权重呈指数递减。因此,ti时刻基于EMA的负载跟踪器功能定义为:
n为历史窗口大小,经验值取16,参数α称为平滑常数。平滑常数
c
j表示第j时刻的CPU利用率。对于基于时间t
i的EMA的负载跟踪器,由于权重衰减,最近的观测结果比以前的观测结果贡献更大,EMA(S
n(t
i))表示t
i时刻的指数移动平均值。
最终可以得到每一时刻的指数移动平均数,然后组成一个集合,然后取时间最近的集合,即最近的q+1个时刻的指数移动平均数。组成(li-q、li-q+1、……、li),称为最近指数移动平均数序列。q表示预测所需要的负载追踪器的长度,其决定了预测的精度。
步骤003,设置最大负载追踪器长度,根据所述每一时刻的指数移动平均数获取最大负载追踪器序列;根据最大负载追踪器序列中的序列值获取变化度量;根据所述变化度量获取最优的负载追踪器序列长度;根据所述最优的负载追踪器序列长度获取最近指数移动平均数序列;对所述最近指数移动平均数序列利用线性外推预测法获取未来时刻的CPU利用率。
此处基于下述方法获取负载追踪器的长度:
首先设置最大负载追踪器长度,经验值为n,即16。然后获取当前时刻及前n-1时刻的指数移动平均值,组成最大负载追踪器序列。
对最大负载追踪器序列进行波动分解,波动分解优选的方法采用STL分解,采用STL的优点是对异常值不敏感,且更具鲁棒性。STL将某时刻的时间序列数据分解为趋势成分TF、周期性成分SF和剩余部分EF:
Y=TF+SF+EF V=1,2,…,N
趋势成分是覆盖整个时间序列的影响因素。周期性成分是在一定时间间隔内反复出现和消失的影响因素。剩余部分是一个随机因素,与时间无关。上述三个分量的长度与原始最大负载追踪器序列长度一致。
然后利用上述成分进行最优获取负载追踪器序列的获取,由于周期性成分、剩余部分是较为波动、随机的部分,因此此处优选采用最大负载追踪器序列周期成分、最大负载追踪器序列剩余成分进行计算。
对分量进行度量:
对于分量中的每一个序列值,获取其左、右相邻4个的序列值,然后将序列值与左、右相邻4个的序列值组成一个局部分量序列,该局部分量序列的长度为9,然后利用Kmeans对该局部分量序列进行分组,Kmeans的度量方式采用L1度量,最终可以对局部分量序列中的值进行分组,组的个数U的经验值为3,代号分别为0,1,2,然后将局部度量序列中的每个值赋值为其组的代号,得到局部分组序列。
然后计算局部度量序列的熵E:
熵(Entropy),测量数值出现的随机性。熵是序列包含信息量的随机性度量,表现了序列的复杂程度。当序列中所有值的代号值均相等或者值表现出最大的随机性时,熵最大。
p(z)表示局部分组序列中第Z组的序列值个数占所有组的数量比例。U表示组的个数。
然后对于局部分组序列进行共现概率计算,即度量每两个相邻数值对出现的概率,最终可得8个共现对,然后组成共现矩阵,所述共现对不考虑出现的顺序,即(0,1)跟(1,0)的共现概率一起计算,最终得到非重复共现对。然后计算对比度,用以表征序列中序列值及其邻域序列值的对比情况,序列值变化越大,对比度就越大。至此,即可得到每两个数值对出现的共现概率,即非重复共现对概率。
获取对比度C:
表示U个分组情况下的非重复共现对的数学排列组合数量,i
z1、j
z1表示第Z1个非重复共现对的数值,p(z1)表示第Z1类非重复共现对的在所有非重复共现对中的比例。
最终得到局部度量序列的变化度量:
R=E*C
该值越大,表明序列的变化越大,体现在随机性及数值差异上。
至此,对于分量中的每个序列值,都可得到一个局部度量序列,并获取其变化度量,该变化度量作为分量中每个序列值的变化度量。
进一步的,计算最大负载追踪器序列中每个值的变化度量:
R′=w2*R1+w2*R2
w1、w2分别为周期分量、余项分量的权重,经验值分别为0.7、0.3。R1、R2分别为周期分量、余项分量中每个序列值的变化度量。
通过上式,即可得到最大负载追踪器序列中每个序列值的变化度量。
然后采用迭代的方式获取最优的度量q,此处设置最小负载追踪器的长度n′,经验值为5,然后以时间最近为原则,求取长度为n′到n之间任意长度的序列的变化度量,选取第一个转折点时的序列长度,第一个转折点定义为该点的变化度量小于下一个点的变化度量。然后将第一个转折点的长度时的序列长度作为最优负载追踪器序列的长度。此处即求取5到16之间任一序列长度的序列的变化度量,总共12个变化度量,假设序列长度为5的变化度量为6,序列长度为6的变化度量为8,序列长度为7的变化度量为6,则序列长度为5的变化度量小于序列长度为6的变化度量,该长度为第一个转折点,即长度5作为最优负载追踪器序列的长度。
通过上述方法,可以得到相对平稳的负载追踪器序列,而非变化较大的非线性负载追踪器序列,进而使得线性外推预测更准确。
至此,即可得到最优的q来进行线性外推预测,通过q得到最近指数移动平均数序列。
然后利用负载预测函数返回预测的未来CPU使用率值。此处负载预测函数采用基于线性外推法获取未来时刻的移动平均数,用来近似表示未来时刻的CPU使用率。
q为最优负载追踪器序列的长度,k表示预测步长,l
i、l
i-q分别表示第i时刻、第i-q时刻的指数移动平均值,P1(l
i+1)表示预测的第i+1时刻的CPU利用率。线性外推预测可确保预测值在CPU使用率达到峰值时突然上升,增大CPU资源缩放效率。
表示序列中每两个相邻序列值的平均差。l
i-q+1表示序列中的第一个序列值。
步骤004,构建保底机制,基于所述保底机制获取最合适的未来时刻CPU利用率。
由于原始公式在预测中,当CPU负载趋于平坦时,li-li-q将接近0,这将导致预测值出现悬崖。因此,引入了一种新的保底机制。采用保底机制可以防止预测的资源使用快速、意外地下降。
lu表示最近指数移动平局数序列的第u个值,P2(li+1)表示预测最合适的第i+1时刻的CPU利用率,Max为取最大操作,β为映射系数,q表示为最优负载追踪器序列长度。保底机制中引入了β,为一个常数,经验值为0.8,该参数与最近CPU使用值前的平均值相乘,然后取这一项与线性外推预测值之间的最大值,因此预测不会迅速下降。基于EMA的推荐算法具有计算复杂度低的优点,因此适用于无服务器函数的小型自动缩放,同时保持了良好的预测结果。
步骤005,将上述CPU自动缩放方法进行集成,以使服务器可以动态调整容器CPU资源。
VPA全称Vertical Pod Autoscaler,即垂直Pod自动扩缩容,它根据容器资源使用率自动设置CPU和内存的请求,从而允许在节点上进行适当的调度,以便为每个Pod提供适当的资源,VPA为Kubernetes引擎所带的模块。VPA的主要目的不仅是减少容器请求的冗余资源浪费,而且还降低容器中的应用程序因资源不足而被限制或终止的可能性。VPA主要由三个组件组成:推荐程序、更新程序和准入控制器。自动缩放算法被集成到推荐组件中,通过使用自定义自动缩放算法配置VPA,从而使VPA能够提供一种动态调整容器CPU资源请求大小的机制。
需要说明的是:上述本发明实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。