一种面向流式大数据的基数估计方法技术

技术编号:15437451 阅读:129 留言:0更新日期:2017-05-26 03:31
本发明专利技术公开了一种面向流式大数据的基数估计方法,所述面向流式大数据的基数估计方法针对流式大数据,通过降低计算精度提高基数估计效率;对HyperLogLog Counting算法所需的中间统计信息进行分区计算,选择高效的哈希算法和最优的分桶个数,通过改进的分桶方法将哈希过的数据较为均匀的映射到m个不同的桶号中,并进行增量维护,再进行合并得到最终的中间统计信息,从而计算基数估计值。本发明专利技术有效的利用了历史数据,避免了重复计算,极大的提高了基数估计的效率;实现了高精度基数估计,相比传统算法给出了高效的分桶方法,提高了基数估计的精度;算法空间复杂度很低,降低了计算资源消耗。

A radix estimation method for streaming large data

The invention discloses a method for streaming large data base estimation method, the flow for large data base flow estimation method for large data, improve the calculation precision of estimation efficiency by reducing the base; intermediate statistical information required for HyperLogLog Counting algorithm to partition computation, several bucket selection efficient the hash algorithm and the optimal mapping hash the data evenly to m different bucket number by bucket method improved, and incremental maintenance, then combined the middle final statistics, to calculate the cardinality estimate. The invention effectively utilizes historical data, to avoid repeated calculation, greatly improve the efficiency of cardinality estimation; to achieve high-precision cardinality estimation algorithm is given, compared with the traditional method, the barrel, improves the accuracy of cardinality estimation algorithm; space complexity is low, reduces the computational resource consumption.

【技术实现步骤摘要】
一种面向流式大数据的基数估计方法
本专利技术属于大数据计算
,尤其涉及一种面向流式大数据的基数估计方法。
技术介绍
当前大数据时代可把大数据分成两种:批式大数据和流式大数据。如果把数据当成水库的话,水库里的水就是批式大数据,进来的水就是流式大数据。流式大数据是指以数据流的方式到达并实时写入到存储管理系统中的数据源,也称FastData。其具有高吞吐率、体量巨大的特点,而且数据规模与数据值范围往往不可预知。基数(cardinality)是指一个集合(允许存在重复元素,与集合论对集合严格的定义略有不同)中不同元素的个数。精确的基数计数在面对大数据场景时往往力不从心,因此如何在误差可控的情况下对基数进行估计就显得十分重要。目前常见的基数估计算法有LinearCounting、LogLogCounting、AdaptiveCounting及HyperLogLogCounting等,都是基于概率统计理论所设计的概率算法。基数估计在数据库优化、网络监控、数据分析等领域都有广泛的应用需求。例如数据库优化中需要计算的一个重要统计特性NDV(numberofdistinctvalues),实际上就是对表中的相应数据进行基数估计。再例如入侵检测系统(IDS)中需要统计每一个源地址建立了多少个不同的连接,来检测一些拒绝服务攻击(DOS),实际上就是提取数据包头的相应信息进行计数估计。因此,对流式大数据进行高精度实时的基数估计具有重要的价值。目前的大数据分析统计系统本质是一种精确计算的方法,例如基于Hadoop的相关大数据存储管理系统与方法,是基于先存储后处理的批处理模式实现的,然后扫描原始数据获得准确的计算值,无法应对流式大数据高速到达的应用特征。尽管Tez,SparkStreaming,Storm等系统基于内存计算可以提高响应速度,但由于精确计算需维护与原始数据等量的内存空间来支持数据的统计查询,因此很难适用流式大数据海量规模的特点。为了解决上述问题,人们提出了一些解决方案,其中:Oracle公司的数据库团队提出了SynopsisAggregation算法(申请号60/859,817),是一种基于概率的基数估计算法。该方法包括一下步骤:1.将数据按照一定规则进行分区,每个分区调用ApproximateNDV算法进行计算获得一个概要元素集合Synopsis;2.对每个分区的集合Synopsis进行归一化处理,并进行合并形成最终的集合Synopses;3.对集合Synopses中的元素再次调用ApproximateNDV算法进行计算;4.对第3步的结果调用公式即可获得最终的基数估计值。该方法还引入了增量框架模型,对历史分区数据进行增量计算,提高计算效率。但其存在的不足之处是:调用的ApproximateNDV算法具有较大的计算复度,同时也需要较大的内存,因此并不适用于流式大数据的实时基数估计。国家计算机网络与信息安全管理中心和中国科学院信息工程研究所的专利“一种大数据多区间查询条件下的基数估计方法及装置”(申请号201310484503.6申请公布号CN103544258A)公开了一种大数据多区间查询条件下的基数估计方法及装置,该方法包括以下步骤:1.按照数值属性对大数据预先划分成多个分区,每个分区内保存所述大数据中的一段数据源,各个分区之间有序排列;2.建立树形索引结构,每个分区作为树形索引结构的一个节点,每个节点用于记录对应的分区的最大值和最小值,每个节点中设置数据文件和基数估算器;3.获取待写入树形索引结构的数据源,对支持区间查询条件的数据源进行倒排索引处理;4.将经过倒排索引处理的数据源的相应部分分别写入数据文件及基数估算器内;5.根据区间查询条件在树形索引结构中查询满足区间查询条件的节点,得到节点中的基数估算器,对基数估算器中的数据源的相应部分进行逻辑处理,得到基数估算值。该方法虽然能实现多区间查询条件下的基数估计,但其存在的不足之处是:分区是严格依据数据值的大小排列的,而流式大数据的数据规模与数据值范围往往不可预知,从而极大的降低了算法效率;更为重要的是,每个分区都是调用HyperLogLog基数估计算法,该算法在某些数据分布下估计精度会下降,同时当流式大数据急剧增加时,计算时间增加,不能保证数据处理的实时性。综上所述,现有的流式大数据的基数估计方法存在调用的基数估计算法具有较大的计算复杂度,极大降低了算法效率;估计精度会下降,同时当流式大数据急剧增加时,计算时间增加,不能保证数据处理的实时性。
技术实现思路
本专利技术的目的在于提供一种面向流式大数据的基数估计方法,旨在解决现有的流式大数据的基数估计方法存在调用的基数估计算法具有较大的计算复杂度,极大降低了算法效率;估计精度会下降,同时当流式大数据急剧增加时,计算时间增加,不能保证数据处理实时性的问题。本专利技术是这样实现的,一种面向流式大数据的基数估计方法,所述面向流式大数据的基数估计方法针对流式大数据,通过降低计算精度提高基数估计效率;对HyperLogLogCounting算法所需的中间统计信息进行分区计算,选择高效的哈希算法和最优的分桶个数,通过改进的分桶方法将哈希过的数据较为均匀的映射到m个不同的桶号中,并进行增量维护,再进行合并得到最终的中间统计信息,从而计算基数估计值。进一步,所述面向流式大数据的基数估计方法包括以下步骤:步骤一,按照流式数据到达时刻以相同的时间间隔将大数据划分成多个分区,每个分区内保存所述大数据中的一段数据源,各个分区之间按照时序关系有序排列;步骤二,在每个分区构建统计信息计算器,通过改进的分桶方法将哈希过的数据较为均匀的映射到m个不同的桶号中,维护和建立一个m字节大小的记录分区数据统计信息的bitmap;步骤三,建立和增量维护全局哈希表,每个分区的统计信息以键值对的形式存入全局哈希表,键为对应分区起始时刻时间经过哈希后的值,值即为该分区的经过统计信息计算器获得的bitmap中存放的值;步骤四,构建分区统计信息合并器,从全局哈希表中获取给定数据时间窗口中所有分区的统计信息bitmap,合并成可以代表数据时间窗口中所有数据的统计信息bitmap;步骤五,构建基数估计计算器,从分区统计信息合并器中获取最终的统计信息bitmap,进行偏差调整,选择最优的结果。进一步,所述分区的建立包括:按照流式数据到达时刻以相同的时间间隔将大数据划分成多个分区,每个分区内保存所述大数据中的一段数据源,各个分区之间按照时序关系有序排列如下:[t1,t1+Δt),[t1+Δt,t1+2Δt),[t1+2Δt,t1+3Δt),...,[t1+kΔt,t2),其中k=floor((t2-t1)/Δt)。进一步,所述在每个分区构建统计信息计算器将数据映射到64比特空间;最终确定分桶数m=216;截取64比特数据值的前3组log2m比特的二进制值相互异或,将异或值作为桶号;64比特数据值去掉前log2m比特剩余比特组成的二进制值就是需处理的真实值,计算其ρ值,更新bitmap中对应桶号的最大ρ值。进一步,所述建立和增量维护全局哈希表包括:第一步,实时监控数据时间窗口中的分区,确定离开数据时间窗口,新进入数据时间窗口,仍在数据时间窗口数据未发生改变,仍在数据时间本文档来自技高网
...
一种面向流式大数据的基数估计方法

【技术保护点】
一种面向流式大数据的基数估计方法,其特征在于,所述面向流式大数据的基数估计方法针对流式大数据,通过降低计算精度提高基数估计效率;对HyperLogLog Counting算法所需的中间统计信息进行分区计算,选择高效的哈希算法和最优的分桶个数,通过改进的分桶方法将哈希过的数据较为均匀的映射到m个不同的桶号中,并进行增量维护,再进行合并得到最终的中间统计信息,从而计算基数估计值。

【技术特征摘要】
1.一种面向流式大数据的基数估计方法,其特征在于,所述面向流式大数据的基数估计方法针对流式大数据,通过降低计算精度提高基数估计效率;对HyperLogLogCounting算法所需的中间统计信息进行分区计算,选择高效的哈希算法和最优的分桶个数,通过改进的分桶方法将哈希过的数据较为均匀的映射到m个不同的桶号中,并进行增量维护,再进行合并得到最终的中间统计信息,从而计算基数估计值。2.如权利要求1所述的面向流式大数据的基数估计方法,其特征在于,所述面向流式大数据的基数估计方法包括以下步骤:步骤一,按照流式数据到达时刻以相同的时间间隔将大数据划分成多个分区,每个分区内保存所述大数据中的一段数据源,各个分区之间按照时序关系有序排列;步骤二,在每个分区构建统计信息计算器,通过改进的分桶方法将哈希过的数据较为均匀的映射到m个不同的桶号中,维护和建立一个m字节大小的记录分区数据统计信息的bitmap;步骤三,建立和增量维护全局哈希表,每个分区的统计信息以键值对的形式存入全局哈希表,键为对应分区起始时刻时间经过哈希后的值,值即为该分区的经过统计信息计算器获得的bitmap中存放的值;步骤四,构建分区统计信息合并器,从全局哈希表中获取给定数据时间窗口中所有分区的统计信息bitmap,合并成代表数据时间窗口中所有数据的统计信息bitmap;步骤五,构建基数估计计算器,从分区统计信息合并器中获取最终的统计信息bitmap,进行偏差调整,选择最优的结果。3.如权利要求2所述的面向流式大数据的基数估计方法,其特征在于,所述分区的建立包括:按照流式数据到达时刻以相同的时间间隔将大数据划分成多个分区,每个分区内保存所述大数据中的一段数据源,各个分区之间按照时序关系有序排列如下:[t1,t1+Δt),[t1+Δt,t1+2Δt),[t1+2Δt,t1+3Δt),...,[t1+kΔt,t2),其中k=floor((t2-t1)/Δt)。4.如权利要求2所述的面向流式大数据的基数估计方法,其特征在于,所述...

【专利技术属性】
技术研发人员:赵兴文王浩李晖朱辉
申请(专利权)人:西安电子科技大学
类型:发明
国别省市:陕西,61

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1