一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种Flink状态存储优化方法及装置与流程

2023-02-06 11:51:58 来源:中国专利 TAG:
一种flink状态存储优化方法及装置
技术领域
:1.本发明涉及大数据实时仓库领域,尤其是一种flink状态存储优化方法及装置。
背景技术
::2.flink提供了内存存储、文件系统存储和rocksdb(基于leveldb开发的一款提供键值存储与读写功能的lsm-tree架构引擎)存储等不同的状态存储方式。在使用flink实时数据仓库写入数据场景中,经常需要将两条数据流进行join(关联),将两条数据流的数据关联在一起生成业务需要的数据并输出。由于不同的数据流到达的先后顺序不定,需要使用intervaljoin(flinksql的一种关联方式,可以让两条流进行join时,左流或者右流中每条记录只关联另外一条流上同一时间段内的数据,且进行join后,仍然保留输入流上的时间列,便于继续进行基于eventtime的操作)将数据缓存一段时间,等待左流和右流到达完成join。当业务场景数据量非常大,可达到每秒几十万条的数据规模时,在此规模下,就需要缓存超大状态存储,这种情况下要求需要cache(缓存)的容量非常大,导致内存成本过高,以及在大量数据下查询效率低下。技术实现要素:3.为解决flink实时数据仓库中需要缓存超大状态存储导致内存成本过高以及在大量数据下查询效率低下的问题,本发明提供一种flink状态存储优化方法及装置,采用rocksdb作为状态存储方式,通过内存 磁盘模式存储,动态调整参数配置,具有存储量大、成本低和稳定性高等优点。4.为实现上述目的,本发明采用下述技术方案:5.在本发明一实施例中,提出了一种flink状态存储优化方法,该方法包括:6.性能采集器获取系统状态信息和数据库状态信息发送到调优控制器;7.调优控制器对系统状态信息和数据库状态信息进行分析,判断是否需要进行参数调优;若是则发送参数模型和调优规则给机器学习调优器;8.根据参数模型和调优规则,机器学习调优器利用知识库和机器学习,使用高斯过程回归模型结合贝叶斯优化算法,得出参数调整结果集并发送给调优控制器;9.调优控制器根据参数调整结果集,对rocksdb的配置参数进行动态调整。10.进一步地,高斯过程回归模型结合贝叶斯优化算法,得到如下算法函数:11.u(x)=m(x) k*s(x)12.其中,x是样本参数值,m(x)是x的均值,s(x)是x的标准差,k是算法系数,k》0是可调的算法系数;13.通过上述算法函数,找出最大的u(x)即可。14.进一步地,调优控制器监控参数调整后rocksdb的状态,并判断此次参数调整是否有效,若有效则发送更新知识库指令到机器学习调优器,进行知识库的更新。15.进一步地,flink给每个资源并发度分配了一个rocksdb实例,在flink中的每个状态都是一个列族,不同的列族对应不同的sst文件/内存表。16.在本发明一实施例中,还提出了一种flink状态存储优化装置,该装置包括:17.性能采集器,用于获取系统状态信息和数据库状态信息发送到调优控制器;18.调优控制器,用于对系统状态信息和数据库状态信息进行分析,判断是否需要进行参数调优;若是则发送参数模型和调优规则给机器学习调优器;根据机器学习调优器发送的参数调整结果集,对rocksdb的配置参数进行动态调整;19.机器学习调优器,用于根据参数模型和调优规则,利用机器学习调优器利用知识库和机器学习,使用高斯过程回归模型结合贝叶斯优化算法,得出参数调整结果集并发送给调优控制器。20.进一步地,高斯过程回归模型结合贝叶斯优化算法,得到如下算法函数:21.u(x)=m(x) k*s(x)22.其中,x是样本参数值,m(x)是x的均值,s(x)是x的标准差,k是算法系数,k》0是可调的算法系数;23.通过上述算法函数,找出最大的u(x)即可。24.进一步地,调优控制器监控参数调整后rocksdb的状态,并判断此次参数调整是否有效,若有效则发送更新知识库指令到机器学习调优器,进行知识库的更新。25.进一步地,flink给每个资源并发度分配了一个rocksdb实例,在flink中的每个状态都是一个列族,不同的列族对应不同的sst文件/内存表。26.在本发明一实施例中,还提出了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现前述flink状态存储优化。27.在本发明一实施例中,还提出了一种计算机可读存储介质,计算机可读存储介质存储有执行flink状态存储优化的计算机程序。28.有益效果:29.1、本发明将机器学习与实时数据库相结合,实现智能参数调优。30.2、本发明使用高斯过程回归模型来推荐调优参数,计算量较低,训练样本很少的情况下表现也很好。31.3、本发明采用rocksdb作为状态存储方式,对rocksdb参数实现动态调整,发挥更加极致的性能。附图说明32.图1是本发明rocksdb状态存储在flink中的架构图;33.图2是本发明flink状态存储优化方法流程示意图;34.图3是本发明flink状态存储优化装置结构示意图;35.图4是本发明计算机设备结构示意图。具体实施方式36.下面将参考若干示例性实施方式来描述本发明的原理和精神,应当理解,给出这些实施方式仅仅是为了使本领域技术人员能够更好地理解进而实现本发明,而并非以任何方式限制本发明的范围。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。37.本领域技术人员知道,本发明的实施方式可以实现为一种装置、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。38.根据本发明的实施方式,提出了一种flink状态存储优化方法及装置,通过机器学习获得的针对数据库存储引擎rocksdb不同负载场景下较优的参数配置,通过监控数据库运行和负载情况,获取数据库当前状态,分析可能配置的调优参数,对rocksdb参数实现动态调整,以使其在更好的运行状态下发挥更加极致的性能。39.下面参考本发明的若干代表性实施方式,详细阐释本发明的原理和精神。40.rocksdb是基于lsm(logstructuredmergetree,lsm的设计目标是提供比传统的b 树更好的写性能;lsm通过将磁盘的随机写转化为顺序写来提高写性能,而付出的代价就是牺牲部分读性能和写放大)结构的kv(keyvalue,键值)存储引擎,通过内存 磁盘模式存储,存储量大,成本低。同样可以通过kv高效查找数据。如图1所示,flink给每个并发度(在flink中,把对资源的最小抽象称作slot,这里的并发度就是solt的意思)分配了一个rocksdb实例,而在flink当中的每个state(状态)都是一个columnfamily(列族),不同的columnfamily对应不同的sst文件(由footer与block两块组成,其中footer可以理解为文件加载的引导数据(block的元数据),block用来存放sst文件的数据与元数据)/memtable(内存表)。41.图1中,taskmanager:相当于flink整个集群的slave节点,负责具体的任务执行和对应任务在每个节点上的资源申请和管理。slot:在flink中,将对资源的最小抽象称作slot,可以理解为是资源的最小管理单位,它是taskmanager资源的一个子集;通过slot,flink将资源进行有效的划分和管理。timercolumnfamily:计时器列族。leftcachecolumnfamily:左缓存列簇。rightcachecolumnfamily:右缓存列簇。42.rocksdb的配置参数很多,很多情况下只能通过反复测试或者依靠经验来调优,如果有一个自动调整的方案就可以大大减少调优的人力成本。因此,本发明提出了一种flink状态存储优化方法,如图2所示,该方法包括:43.1、设定参数模型中包含的一些常用的参数,具体如下:44.(1)block-size(块大小):45.rocksdb会将数据存放在datablock(数据块)里面,block-size设置这些datablock的大小,当需要访问某一个key的时候,rocksdb需要读取这个key所在的整个datablock。对于点查(精确查找),更大的datablock会增大读取的空间,影响性能,但是对于范围查询,更大的datablock能够更有效的利用磁盘带宽。46.(2)disable-auto-compactions(禁用自动压缩):47.定义是否关闭compaction(压缩),compaction会占用磁盘带宽,影响写入速度。但如果lsm得不到compact(协议),level0(第0层级)文件会累积,影响读性能。48.(3)write-buffer-size(写入缓冲区大小):49.单个memtable(内存表)的大小限制(最大值),更大的memtable可能会增加二分查找插入位置的消耗。50.(4)max-bytes-for-level-base(levelbase的最大字节数):51.lsm里面level1(第1层级)文件的总大小,在数据量固定的情况下,这个值更大意味着其实lsm的层数更小,对读有利。52.(5)target-file-size-base(目标文件大小基数):53.假设target-file-size-multiplier(目标文件大小乘数)=1的情况下,这个选项设置的是每个sst文件的大小。这个值偏小的话意味着sst文件更多,会影响读性能。54.(6)bloom-filter-bits-per-key(每个密钥的bloom筛选器位):55.设置bloomfilter(布隆筛选器)的位数,对于读操作这一项越大越好。56.(7)optimize-filters-for-hits(优化命中筛选):57.true表示关闭lsm最底层的bloomfilter。这个选项主要是因为最底层的bloomfilter总大小比较大,比较占用blockcache空间。如果已知查询的key一定在数据库中存在,最底层bloomfilter其实是没有作用的。58.2、使用者发送调优控制信息至调优控制器。调优控制信息主要包括:59.(1)i/o负载模式:定义负载模式,例如读写比例和读写方式等,用于调优控制器利用获取到的rocksdb状态判断工作负载场景。60.(2)设备信息:存储设备信息和运行数据库系统的设备信息等。61.(3)可调整参数列表:rocksdb允许通过api接口调整的参数繁多,应由使用者指定其中一部分参数针对性调优(变量过多会影响机器学习得出推荐结果的速度)。62.(4)主要的调优指标:由于rocksdb本身的实现,导致读放大、写放大和空间放大等问题不能全部解决,需要进行合理取舍,因此需要使用者指定调优目标,例如,需要优化写放大或者优化读放大,或者是优化吞吐或时延等。63.3、性能采集器64.获取系统状态信息和数据库状态信息发送到调优控制器。65.(1)系统状态信息:考虑到不同系统环境的差异,所有的特征(系统cpu、内存资源、i/o等)都放缩到(0,1)(对不同样本的同一特征值,减去其最小值,除以(最大值-最小值),最终原最大值为1,原最小值为0)区间,这样在数据分析时可以有效的消除不同单位大小对最终结构的权重影响。66.(a)系统cpu、内存资源和i/o读写速率评分,以32核、2.4ghz、64gb和ssd(固态硬盘)为基准。67.(b)cpu和内存的已使用百分比。68.(c)当前进程占用系统的cpu和内存的百分比。69.(2)数据库状态信息:主要包括当前存储参数的设置和数据库的内部状态。70.(a)当前的参数配置,以默认参数配置和系统资源为基准进行适当放缩。71.(b)数据库相对于本地文件读写速率的百分比。72.(c)当前数据库内部的写放大系数、写停止次数、层级个数、读写比例和读数据延迟。73.4、调优控制器74.调优控制器接收使用者发送的调优控制信息并解析,生成调优规则。75.对性能采集器获取的系统状态信息和数据库状态信息进行分析,判断是否需要对第1步设定的参数进行调优,如需要则选取了下表1中的四个metrics(指标)作为调优指标:76.表1[0077][0078][0079]调优控制器根据性能采集器获取的系统状态信息和数据库(rocksdb)状态信息与调优控制器中预设的优化阈值进行比较,判断是否需要进行参数调优,当不需要进行调优时,持续比较并判断是否需要调优,当需要进行调优时,调优控制器会将参数模型和调优规则(包含使用者指定的调参列表和调优指标)发送给机器学习调优器,机器学习调优器会给出参数调整结果集,最后调优控制器对rocksdb的配置参数进行优化。[0080]5、机器学习调优器[0081]机器学习调优器(包含知识库)接收到调优控制器发送的参数模型及调优相关信息后,通过知识库或机器学习模块训练得出参数调整结果集并反馈给调优控制器。利用知识库获取参数调整结果集主要是将当前参数模型,与知识库进行对比,找出相同或相似的参数,获得这些参数对应的参数调整结果集。[0082]利用机器学习模块训练获取参数调整结果集主要有以下步骤:[0083](1)根据参数模型定义数据集;[0084](2)选取训练模型;[0085](3)模型训练和数据采集;[0086](4)输出参数调整结果集。[0087]本方案使用了高斯过程回归(gaussianprocessregression,以下简称gp)来推荐,它是基于高斯分布的一种非参数模型。高斯过程回归的好处是:[0088](1)和神经网络之类的方法相比,gp属于无参数模型,算法计算量相对较低。[0089](2)它能估计样本的分布情况,即x(样本参数值)的均值m(x)和标准差s(x)。若x周围的数据不多,则它被估计出的标准差s(x)会偏大(表示这个样本和其他样本的差异大)。直观的理解是若数据不多,则不确定性会大,体现在标准差偏大。反之,数据足够时,不确定性减少,标准差会偏小。[0090]但gp本身其实只能估计样本的分布,为了得到最终的预测值,需要把它应用到贝叶斯优化(bayesianoptimization)算法中。[0091]贝叶斯优化算法大致可分为两步:[0092](1)通过gp估计出函数的分布情况。[0093](2)通过采集函数指导下一步的采样(也就是给出推荐值)。[0094]采集函数的作用是:在寻找新的推荐值的时候,平衡探索(exploration)和利用(exploitation)两个性质:[0095](a)exploration:在目前数据量较少的未知区域探索新的点。[0096](b)exploitation:对于数据量足够多的已知区域,利用这些数据训练模型进行估计,找出最优值。[0097]在推荐的过程中,需要平衡上述两个性质。exploitation过多会导致结果陷入局部最优值(重复推荐目前已知的最好的点,但可能还有更好的点没被发现),而exploration过多又会导致搜索效率太低(一直在探索新区域,而没有对当前比较好的区域进行深入尝试)。而平衡二者的核心思想是:当数据足够多时,利用现有的数据推荐;当缺少数据时,我们在点最少的区域进行探索,探索最未知的区域能给我们最大的信息量。[0098]贝叶斯优化算法的第二步就可以实现这一思想。前面提到gp可以估计x的均值m(x)和标准差s(x),其中均值m(x)可以作为exploitation的表征值,而标准差s(x)可以作为exploration的表征值。这样就可以用贝叶斯优化算法来求解了。[0099]使用置信区间上界算法作为采集函数。假设需要找x使y值(通过算法函数计算的预测参数值)尽可能大,则算法函数u(x)=m(x) k*s(x),其中,算法系数k》0是可调的算法系数。只要找x使u(x)尽可能大即可。[0100](a)若u(x)大,则可能m(x)大,也可能s(x)大。[0101](b)若s(x)大,则说明x周围数据不多,需要探索未知区域新的点。[0102](c)若m(x)大,说明估计的y值均值大,则需要利用已知数据找到效果好的点。[0103](d)其中,系数k影响着探索和利用的比例,k越大,越鼓励探索新的区域。[0104]在具体实现中,一开始随机生成若干个candidateknobs(候选旋钮),然后用上述算法函数计算出它们的u(x),找出u(x)最大的那一个作为本次推荐的结果。[0105]6、参数调整结果集[0106]机器学习调优器接收到参数模型和调优规则后利用知识库(目前数据库领域针对不同参数模型总结出的参数调整建议)和机器学习模块得出参数调整结果集并发送到调优控制器,推荐参数调整结果集如下表2:[0107]表2[0108]调优参数调优值bloom-filter-bits-per-key18block-size10kdisable-auto-compactionsfalseoptimize-filters-for-hitsfalse[0109](1)调优控制器接收到机器学习调优器反馈的参数调整结果集后,发送参数调整指令和参数调整结果集到rocksdb。[0110](2)rocksdb接收到调优控制器的参数调整指令后,解析参数调整结果集,并将其分解为键值对(一般参数都是键值对形式的),调用参数调整api,并执行参数动态调整,将执行结果反馈至调优控制器。[0111](3)调优控制器接收到rocksdb结果反馈后,监控rocksdb状态,根据设定的优化阈值判断判断此参数调优是否有效,若有效则发送更新知识库指令到机器学习调优器,否则返回第4步。[0112](4)机器学习调优器接收到更新知识库指令后,将此次调优参数模型和参数调整结果集更新到知识库,并反馈结果到调优控制器;[0113](5)调优控制器接收到机器学习调优器更新完成反馈后结束调优。[0114]需要说明的是,尽管在上述实施例及附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须按照该特定顺序来执行这些操作,或是必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。[0115]基于同一发明构思,本发明还提出一种flink状态存储优化装置。该装置的实施可以参见上述方法的实施,重复之处不再赘述。以下所使用的术语“模块”,可以是实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。[0116]图3是本发明flink状态存储优化装置结构示意图。如图3所示,该装置包括:[0117]性能采集器101,用于获取系统状态信息和数据库状态信息发送到调优控制器;[0118]调优控制器102,用于对系统状态信息和数据库状态信息进行分析,判断是否需要进行参数调优;若是则发送参数模型和调优规则给机器学习调优器;根据机器学习调优器发送的参数调整结果集,对rocksdb的配置参数进行动态调整;监控参数调整后rocksdb的状态,并判断此次参数调整是否有效,若有效则发送更新知识库指令到机器学习调优器,进行知识库的更新。[0119]机器学习调优器103,用于根据参数模型和调优规则,利用机器学习调优器利用知识库和机器学习,使用高斯过程回归模型结合贝叶斯优化算法,得出参数调整结果集并发送给调优控制器;[0120]高斯过程回归模型结合贝叶斯优化算法,得到如下算法函数:[0121]u(x)=m(x) k*s(x)[0122]其中,x是样本参数值,m(x)是x的均值,s(x)是x的标准差,k是算法系数,k》0是可调的算法系数;[0123]在具体实现中,一开始随机生成若干个candidateknobs(候选旋钮),然后用上述算法函数计算出它们的u(x),找出u(x)最大的那一个作为本次推荐的结果。[0124]应当注意,尽管在上文详细描述中提及了flink状态存储优化装置的若干模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多模块的特征和功能可以在一个模块中具体化。反之,上文描述的一个模块的特征和功能可以进一步划分为由多个模块来具体化。[0125]基于前述发明构思,如图4所示,本发明还提出一种计算机设备200,包括存储器210、处理器220及存储在存储器210上并可在处理器220上运行的计算机程序230,处理器220执行计算机程序230时实现前述flink状态存储优化。[0126]基于前述发明构思,本发明还提出一种计算机可读存储介质,计算机可读存储介质存储有执行前述flink状态存储优化的计算机程序。[0127]本发明提出的flink状态存储优化方法及装置,针对不同参数模型,调整不同的参数配置,使系统发挥更好的性能;基于目前对典型参数模型下的参数调优建议和机器学习模拟得出的参数调整结果集,能够更加有效的优化知识库数据,减少单纯依靠人工调整带来的不利影响;可通过api接口进行参数动态调整配置,不必关闭或重启数据库服务,保证数据库更高效的前提下,使优化的实现更加友好,对服务影响更小。[0128]虽然已经参考若干具体实施方式描述了本发明的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合以进行受益,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包含的各种修改和等同布置。[0129]对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。当前第1页12当前第1页12
再多了解一些

本文用于创业者技术爱好者查询,仅供学习研究,如用于商业用途,请联系技术所有人。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献