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

Gaia集群中面向数据分布特征的维表缓存管理方法及系统与流程

2021-11-09 22:51:00 来源:中国专利 TAG:

gaia集群中面向数据分布特征的维表缓存管理方法及系统
技术领域
1.本发明涉及大数据技术领域,具体涉及gaia集群中面向数据分布特征的维表缓存管理方法及系统。


背景技术:

2.自本世纪初以来,以hadoop为代表的大数据处理技术为社会各界组织提供了可靠的计算服务,缓解了庞大数据量的处理压力。然而在蓬勃发展的信息技术的驱动下,海量数据仍然保持着增长的态势,并且对实时性有着愈加苛刻的要求。迫于这种形势,现有计算引擎的发展方向纷纷朝着流计算靠拢,或是在原有批计算引擎的基础之上模拟流计算的行为的spark,或是一开始就针对流计算特点而设计的storm。但是,面对离线的批数据和实时收集的流数据的双重处理需求,基于现有计算引擎做开发的工作人员往往需要维护使用两套独立api编写的工程项目,甚至是搭建两个不同的数据处理平台,这极大增加了企业的运营成本。因此,开发一种可以屏蔽批计算、流计算底层执行差异,融批、流于一体的新型大数据计算系统是时下的热门研究方向。
3.gaia系统是一个面向多计算模型混合并存的高时效、可扩展的新一代大数据分析系统。在自适应、可伸缩的大数据存储、批流融合大数据计算、高维大规模机器学习和高时效大数据智能交互向导等大数据分析系统的几个核心层面,解决一系列关键技术问题,构建自主可控的高时效、可伸缩的新一代大数据分析系统,掌握国际领先的大数据分析系统核心技术。
4.gaia系统针对批流混合任务具有全周期多尺度优化和统一计算引擎。现有大数据计算系统或依托自身计算引擎模拟另一类框架的行为,或定义一套通用接口屏蔽底层计算引擎的差异,对批流融合支持较弱。同时,其优化大多位于执行的特定时期或特定层级,且针对高复杂性任务的优化能力不足。针对以上问题,创新性地开发了基于统一计算引擎和全周期多尺度优化的高性能批流融合大数据计算技术。该技术为批流融合处理提供统一表达逻辑支持,通过统一表达建模融合批流处理的计算模型、数据模型、变换模型和动作模型,实现批、流处理的真正融合。针对作业的多样性、持久性、迭代性等特点,提供面向多作业、多任务、迭代计算、持久计算等优化策略,优化针对性更强。同时,提供执行前和执行中的全周期优化,并细分为作业级、任务级、变换级等多个尺度,以实现极速响应和海量吞吐。
5.维表是数据仓库领域中的概念,通常是存储在外部数据存储系统中的离线数据表,往往用于和实时产生的、从终端采集的用户行为日志做连接运算以补充额外信息,因此维表关联技术是研究批流交互的一个很好的切入点。
6.在现有的几种维表关联技术中,如果选择随着流数据的摄入实时查询离线数据,则会把性能瓶颈转移给外部存储系统;如果采用缓存策略,由于常见的大数据计算系统没有提供相关服务的api,需要由开发人员自行搭建缓存,这无疑会加重开发人员的负担,更重要的是,无法完全兼容系统底层计算引擎的执行特点,最大化计算性能。


技术实现要素:

7.有鉴于此,本发明提供了gaia集群中面向数据分布特征的维表缓存管理方法及系统,为了在gaia执行维表关联计算时能兼顾内存空间占用率和查询效率,以支持更大规模的维表数据并实现极速响应,本发明充分考虑到了维表数据的分布特征情况,在此基础上开发了一套从构建到查询再到增量更新的全周期分布式缓存管理机制。
8.为达到上述目的,本发明的技术方案为:gaia集群中面向数据分布特征的维表缓存管理方法,包括如下步骤:
9.步骤1、利用数据分布特征构建维表关联缓存索引结构,维表关联缓存索引结构即为多路平衡跳表,由一个固定大小为2p

1的路由数组和p个大小均衡的分段跳表构成,其中,其中参数p由用户通过配置文件或者api接口指定;
10.步骤2、提取维表数据的分布特征信息。
11.步骤3、构建全周期分布式缓存管理机制,具体包括如下步骤:
12.s301、进行缓存构建,具体为:首先定义了路由数组的初始化方法,用于根据全量维表数据的分布特征提取p分位点,完成路由数组的初始化;还定义了分段确定方法,用于为每条维表数据确定所属分段;还定义了索引建立方法,用于为每条维表数据建立索引。
13.s302、在维表关联计算任务的执行过程中,根据流数据记录的关键字从多路平衡跳表中查询相应的维表数据。
14.s303、p个分段跳表之间的平衡调整方法,用于支持对维表数据缓存的增量更新,降低更新代价。
15.进一步地,步骤2具体包括如下步骤:
16.s201:gaia集群系统通过dataset数据源把维表数据摄入系统的网络缓冲区,并通过api接口指定维表数据的主键列作为关键字。
17.s202:dataset数据源计算关键字的hash值,通过hash分区的方法把网络缓冲区内维表数据分发给下游的关联计算算子。
18.s203:通过抽样算法从采集维表数据中抽取样本数据,然后统计样本数据的p分位点,样本数据的p分位点用于代表全量维表数据的分布特征;样本数据的p分位点随着网络缓冲区内的维表数据一起发往下游的关联算子。
19.进一步地,s301包括如下步骤:
20.s3011:当缓存构建子模块收到样本数据的p分位点后,调用路由数组的初始化方法完成针对路由数组的初始化。
21.s3012:对于后续维表数据的到来,调用分段确定方法,确定每条维表数据所属分段。
22.s3013:采用索引建立方法,在分段跳表中为每条维表数据建立对应的索引。
23.进一步地,s302,包括如下步骤:
24.s3021:根据流数据记录的关键字作为索引,通过分段确定算法确定对应索引所在的分段;
25.s3022:到所在的分段中按照跳表的查找方法查询对应索引;
26.s3023:取出索引指向的维表数据并返回。
27.进一步地,s303,包括如下步骤:
28.s3031:gaia集群系统通过dataset数据源查询外部存储系统,把新增维表数据摄入系统的网络缓冲区。
29.s3032:把新增维表数据包装成add事件,把值发生改变的数据包装成mod事件,把过期的脏数据包装成del事件,事件内部包含完整的维表数据,通过hash分区分发给下游的关联计算算子。
30.s3033:对事件做分类处理,首先按照定位新增维表数据在缓存中的位置,对于add事件,执行插入,对于mod事件,执行更新,对于del事件,执行删除。
31.s3034:调用平衡调整方法,对p个分段跳表的做调整,重新确定各个分段跳表之间的边界,使其大小保持均衡,同时把分段跳表的边界值反馈给路由数组。
32.s3035:路由数组接收到分段跳表反馈的边界值后,确定新的p分位点覆盖掉旧的p分位点,以保证数据分布特征的有效性。
33.gaia集群中面向数据分布特征的维表缓存管理系统,包括数据分布特征提取模块和缓存管理模块。
34.缓存索引结构,称为多路平衡跳表,由一个大小固定为2p

1的路由数组和p个大小均衡的分段跳表构成,其中,参数p可以由用户通过配置文件或者api接口指定。
35.数据分布特征提取模块,用于提取维表数据的分布特征信息,具体地,通过抽样算法从维表数据中抽取数据样本,然后统计样本数据的p分位点,样本数据的p分位点能够代表全量维表数据的分布特征。
36.缓存管理模块,进一步分为缓存构建子模块、缓存查询子模块和缓存更新子模块,用于建立起一套从构建到查询再到增量更新的全周期分布式缓存管理机制。
37.缓存构建子模块,用于根据数据分布特征提取模块统计的p分位点,完成路由数组的初始化;还用于根据分段确定方法,为每条维表数据确定所属分段;还定义了索引建立方法,用于为每条维表数据建立索引。
38.缓存查询子模块,采用缓存查询方法,在维表关联计算任务的执行过程中,根据流数据记录的关键字从多路平衡跳表中查询相应的维表数据。
39.缓存更新子模块,采用p个分段跳表之间的平衡调整方法,对维表数据缓存的增量更新,降低更新代价。
40.进一步地,gaia集群系统通过dataset数据源把维表数据摄入系统的网络缓冲区,并通过api接口指定维表数据的主键列作为关键字;dataset数据源计算关键字的hash值,通过hash分区的方法把维表数据分发给下游的关联计算算子。
41.数据分布特征提取模块,包括如下功能:通过抽样算法从采集维表数据中抽取样本数据,然后统计样本数据的p分位点,样本数据的p分位点用于代表全量维表数据的分布特征;样本数据的p分位点随着网络缓冲区内的维表数据一起发往下游的关联算子。
42.进一步地,缓存构建子模块,包括如下功能:缓存构建子模块收到样本数据的p分位点后,调用路由数组的初始化方法完成针对路由数组的初始化;对于后续维表数据的到来,缓存构建子模块调用分段确定方法,确定每条维表数据所属分段;缓存构建子模块采用索引建立方法,在分段跳表中为每条维表数据建立对应的索引。
43.进一步地,缓存查询子模块,包括如下功能:缓存查询子模块,用于根据流数据记录的关键字,通过分段确定算法确定对应索引所在的分段,在所在的分段中按照跳表的查
找方法查询对应索引,然后取出索引指向的维表数据并返回。
44.进一步地,缓存更新子模块,包括如下功能:
45.gaia集群系统通过dataset数据源查询外部存储系统,把新增维表数据摄入系统。
46.缓存更新子模块把新增维表数据包装成add事件,把值发生改变的数据包装成mod事件,把过期的脏数据包装成del事件,事件内部包含完整的维表数据,通过hash分区分发给下游的关联计算算子,使用和特征提取模块相同的hash函数。
47.缓存更新子模块对接收的事件并做分类处理,定位新增维表数据在缓存中的位置,对于add事件,执行插入,对于mod事件,执行更新,对于del事件,执行删除。
48.缓存更新子模块调用平衡调整方法,对p个分段跳表的做调整,重新确定各个分段跳表之间的边界,使其大小保持均衡,同时把边界值反馈给路由数组;路由数组接收到分段跳表反馈的边界值后,确定新的p分位点覆盖掉旧的p分位点,以保证数据分布特征的有效性。
49.有益效果:
50.1、本发明提供的一种gaia集群中面向数据分布特征的维表缓存管理方法,在底层计算引擎上为维表关联业务配置缓存服务,并暴露相关接口api供用户使用,简化用户编程工作量的同时还兼容了计算引擎的执行特性,方便充分发挥系统性能,并且进一步结合维表数据的分布特征信息设计出一种支持增量更新的缓存索引结构,既可以保证查询效率的稳定性,又节约了内存资源。
51.2、本发明提供了一种gaia集群中面向数据分布特征的维表缓存管理系统,包括数据分布特征提取模块和缓存管理模块,缓存管理模块可分为缓存构建子模块、缓存查询子模块和缓存更新子模块。数据分布特征提取模块通过抽样算法从维表数据中抽取数据样本,统计样本数据的p分位点作为全量数据的分布特征。缓存构建子模块,负责的构建工作分为两部分,首先定义了路由数组的初始化方法,用于根据数据分布特征提取模块统计的p分位点,完成路由数组的初始化;还定义了分段确定方法,用于为每条维表数据确定所属分段;还定义了索引建立方法,用于为每条维表数据建立索引。缓存查询子模块,定义了缓存查询方法,用于在维表关联计算任务的执行过程中,根据流数据记录的关键字从多路平衡跳表中查询相应的维表数据。缓存更新子模块,定义了p个分段跳表之间的平衡调整方法,用于支持对维表数据缓存的增量更新,降低更新代价。
附图说明
52.图1为本发明实施例中各模块组成的整体框架示意图;
53.图2为本发明实施例中数据分布特征提取示意图;
54.图3为本发明实施例中多路平衡跳表结构示意图;
55.图4为本发明实施例中缓存的增量更新以及多路平衡跳表的分段平衡调整示意图。
具体实施方式
56.下面结合附图并举实施例,对本发明进行详细描述。
57.gaia集群中面向数据分布特征的维表缓存管理方法,包括如下步骤:
58.步骤1、利用数据分布特征构建维表关联缓存索引结构,维表关联缓存索引结构即为多路平衡跳表,由一个固定大小为2p

1的路由数组和p个大小均衡的分段跳表构成,其中,其中参数p由用户通过配置文件或者api接口指定;
59.步骤2、提取维表数据的分布特征信息;步骤2具体包括如下步骤:
60.s201:gaia集群系统通过dataset数据源把维表数据摄入系统的网络缓冲区,并通过api接口指定维表数据的主键列作为关键字;
61.s202:dataset数据源计算关键字的hash值,通过hash分区的方法把网络缓冲区内维表数据分发给下游的关联计算算子;
62.s203:通过抽样算法从采集维表数据中抽取样本数据,然后统计样本数据的p分位点,样本数据的p分位点用于代表全量维表数据的分布特征;样本数据的p分位点随着网络缓冲区内的维表数据一起发往下游的关联算子。
63.步骤3、构建全周期分布式缓存管理机制,具体包括如下步骤:
64.s301、进行缓存构建,具体为:首先定义了路由数组的初始化方法,用于根据全量维表数据的分布特征提取p分位点,完成路由数组的初始化;还定义了分段确定方法,用于为每条维表数据确定所属分段;还定义了索引建立方法,用于为每条维表数据建立索引;s301包括如下步骤:
65.s3011:当缓存构建子模块收到样本数据的p分位点后,调用路由数组的初始化方法完成针对路由数组的初始化;
66.s3012:对于后续维表数据的到来,调用分段确定方法,确定每条维表数据所属分段;
67.s3013:采用索引建立方法,在分段跳表中为每条维表数据建立对应的索引。
68.s302、在维表关联计算任务的执行过程中,根据流数据记录的关键字从多路平衡跳表中查询相应的维表数据;s302,包括如下步骤:
69.s3021:根据流数据记录的关键字作为索引,通过分段确定算法确定对应索引所在的分段;
70.s3022:到所在的分段中按照跳表的查找方法查询对应索引;
71.s3023:取出索引指向的维表数据并返回。
72.s303、p个分段跳表之间的平衡调整方法,用于支持对维表数据缓存的增量更新,降低更新代价。s303,包括如下步骤:
73.s3031:gaia集群系统通过dataset数据源查询外部存储系统,把新增维表数据摄入系统的网络缓冲区;
74.s3032:把新增维表数据包装成add事件,把值发生改变的数据包装成mod事件,把过期的脏数据包装成del事件,事件内部包含完整的维表数据,通过hash分区分发给下游的关联计算算子;
75.s3033:对事件做分类处理,首先按照定位新增维表数据在缓存中的位置,对于add事件,执行插入,对于mod事件,执行更新,对于del事件,执行删除;
76.s3034:调用平衡调整方法,对p个分段跳表的做调整,重新确定各个分段跳表之间的边界,使其大小保持均衡,同时把分段跳表的边界值反馈给路由数组;
77.s3035:路由数组接收到分段跳表反馈的边界值后,确定新的p分位点覆盖掉旧的p
分位点,以保证数据分布特征的有效性。
78.本发明还提供了一种gaia集群中面向数据分布特征的维表缓存管理系统,利用数据分布特征构建维表关联缓存索引结构,主要包括数据分布特征提取模块和缓存管理模块,缓存管理模块可分为缓存构建子模块、缓存查询子模块和缓存更新子模块。
79.缓存索引结构,称为多路平衡跳表,由一个大小固定为2p

1的路由数组和p个大小均衡的分段跳表构成,其中,参数p可以由用户通过配置文件或者api接口指定。例如p可依经验设置为9。
80.数据分布特征提取模块,负责提取维表数据的分布特征信息,具体地,通过抽样算法从维表数据中抽取数据样本,然后统计样本数据的p分位点,样本数据的p分位点能够代表全量维表数据的分布特征。
81.缓存管理模块,可进一步分为缓存构建子模块、缓存查询子模块和缓存更新子模块,负责建立起一套从构建到查询再到增量更新的全周期分布式缓存管理机制。
82.缓存构建子模块,负责的构建工作分为两部分,首先定义了路由数组的初始化方法,用于根据数据分布特征提取模块统计的p分位点,完成路由数组的初始化;还定义了分段确定方法,用于为每条维表数据确定所属分段;还定义了索引建立方法,用于为每条维表数据建立索引。
83.缓存查询子模块,定义了缓存查询方法,用于在维表关联计算任务的执行过程中,根据流数据记录的关键字从多路平衡跳表中查询相应的维表数据。
84.缓存更新子模块,定义了p个分段跳表之间的平衡调整方法,用于支持对维表数据缓存的增量更新,降低更新代价。
85.数据分布特征提取模块的工作,包括如下具体步骤:
86.步骤1:gaia集群通过dataset数据源(一种数据类型,批数据)把维表数据摄入系统,并通过api接口指定数据的主键列作为关键字;
87.步骤2:dataset数据源计算关键字的hash值,通过hash分区的方法把维表数据分发给下游的关联计算算子;
88.步骤3:数据分布特征提取模块负责统计维表数据的分布特征信息,具体地,数据分布特征信息通过抽样算法采集,以样本数据的p分位点表示,用于辅助完成缓存索引结构的初始化;样本数据的p分位点
89.步骤4:数据分布特征提取模块统计的p分位点随着网络缓冲区内的维表数据一起发往下游的关联算子。每个缓冲区对应一组p分位点;所有关联算子3共用一个缓存管理模块;
90.缓存构建子模块的工作,包括如下具体步骤:
91.步骤1:当缓存构建子模块收到数据分布特征提取模块发送过来的p分位点后,调用路由数组的初始化方法完成路由数组的初始化;
92.步骤2:对于后续维表数据的到来,缓存构建子模块调用分段确定方法,确定每条维表数据所属分段;
93.步骤3:缓存构建子模块调用索引建立方法,在分段跳表中为每条维表数据建立对应的索引。
94.缓存查询子模块的工作,包括如下具体步骤:
95.步骤1:根据流数据记录的关键字,通过分段确定算法确定对应索引所在的分段;
96.步骤2:到指定的分段中按照跳表的查找方法查询对应索引;
97.步骤3:取出索引指向的维表数据并返回。
98.缓存更新子模块的工作,包括如下具体步骤:
99.步骤1:gaia系统通过dataset数据源查询外部存储系统,把最新的维表数据摄入系统;
100.步骤2:为了支持增量更新,需要把新增的数据包装成add事件,把值发生改变的数据包装成mod事件,把过期的脏数据包装成del事件,事件内部包含完整的维表数据,通过hash分区分发给下游的关联计算算子,使用和特征提取模块相同的hash函数;
101.步骤3:缓存更新子模块接收步骤2发送过来的事件并做分类处理,首先按照缓存构建子模块的步骤2和步骤3定位数据在缓存中的位置,对于add事件,执行插入,对于mod事件,执行更新,对于del事件,执行删除。
102.步骤4:调用平衡调整方法,对p个分段跳表的做调整,重新确定各个分段跳表之间的边界,使其大小保持均衡,同时把边界值反馈给路由数组。
103.步骤5:路由数据接收到分段跳表反馈的边界值后,做它作为新的p分位点覆盖掉旧的p分位点,以保证数据分布特征的有效性。
104.本发明提供的一种gaia集群中面向数据分布特征的缓存优化方法,在底层计算引擎上为维表关联业务配置缓存服务,并暴露相关接口api供用户使用,简化用户编程工作量的同时还兼容了计算引擎的执行特性,方便充分发挥系统性能,并且进一步结合维表数据的分布特征信息设计出一种支持增量更新的缓存索引结构,既可以保证查询效率的稳定性,又节约了内存资源。
105.图1所示为本发明提供的一种gaia集群中面向数据分布特征的缓存优化方法的模块组成示意图,包括数据分布特征提取模块、缓存管理模块,缓存管理模块可进一步分为缓存构建子模块、缓存查询子模块和缓存更新子模块。
106.数据分布特征提取模块,用于从维表数据流中提取数据的分布特征信息,如图2所示,本发明采用p分位点作为数据的分布特征,其中,p可以由用户通过配置文件或者系统启动参数再或者api接口进行配置,它和缓存索引结构的分段数目是相关的。统计p分位点的方法可以选用蓄水池抽样算法,这是一种时间复杂度为o(n),空间复杂度为o(m)的抽样算法(其中,n为数据流容量,m为样本数据容量),它能够适应流数据的特性,以一种自然的方式随着数据流的流动完成样本数据的采集,因此可以尽可能地减少由数据分布特征提取工作带来的额外延迟,数据分布特征模块的工作还包括对样本数据根据指定关键字排序,把有序的样本数据集等分为p份需要p

1个分割点,即[k0,k1,k2,k3,

,k
p
‑2],样本数据的p分位点很大程度上代表了维表数据总体的数据分布特征,因此维表数据的关键字需要实现comparable接口。最后,把p分位点数组发送给部署在关联算子中的缓存构建子模块。
[0107]
缓存管理模块,负责对维表缓存提供从构建到查询再到更新的全周期管理服务,本发明根据数据的分布特征信息优化缓存索引结构,称为多路平衡跳表(p路),目的在于在保证节省内存空间成本的前提下提升查询效率的稳定性并支持增量更新。如图3所示,多路平衡跳表由两部分构成:路由数组和分段跳表,路由数组中存储了维表数据的分布特征信息,在查找数据时起到导向作用,分段跳表对所有维表数据建立了索引。
[0108]
缓存构建子模块,当gaia系统初次摄入维表数据时会通过数据分布特征采集模块统计p分位点,缓存构建子模块是p分位点的接收者,负责路由数组的初始化工作,完成路由数组的初始化之后,就可以随着后续维表数据的到来通过二分法确定数据所属分段,把数据分流到各个分段跳表中建立索引,以图3所示的多路平衡跳表为例,有p分位数组[k0,k1,k2,k3,

,k
p
‑2],对于关键字为k的目标数据,如果有k0<=k<k1,则可以确定目标数据所属分段为segment1。
[0109]
缓存查询子模块,在之后的维表连接计算过程中,gaia系统会根据待连接的流数据的主键列到多路平衡跳表中查找相应数据,查找方法和构建索引的方法类似,先是利用路由数组通过二分法确定数据所在分段,然后到具体的分段跳表中查找并返回。
[0110]
缓存更新子模块,负责以增量的方式对既已建立的缓存数据进行更新。如图4所示,当部分数据集发生改变时,数据的更新类型可分为三种:新增、删除和更新,其中的新增和删除操作会改变数据的分布特征,如果仍然使用上一轮更新中代表数据分布特征的路由数组,会引发分段跳表的数据量分布不均匀的问题,segment0过大,segment1过小,从而导致查询性能退化。所以为了能够保证更新后的缓存索引能够适应数据分布特征的变化,本发明设计了路由数组和分段跳表相结合的索引结构,在缓存更新阶段使用平衡调整方法,分裂较大的segment0,合并较小的segment1,再度使得各个分段跳表的数据量处于一个较为均衡的状态,与此同时,由于跳表中的数据是有序的,可以把位于两个分段跳表边界中的关键字k0’
作为新的分位点反馈给路由数组,更新数据分布特征。
[0111]
综上,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

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

相关文献