一种HBase的列聚合方法技术

技术编号:18444964 阅读:69 留言:0更新日期:2018-07-14 10:23
本发明专利技术公开了一种HBASE的列聚合方法,基于HBase服务端查询机制,所述方法的系统架构中设置有聚合扫描器模块,并且扩展聚合表的描述信息,在其中增加列聚合属性;在查询时,根据列聚合属性对同一单元格的多版本数据进行聚合计算,实现在单元格上的聚合;在合并数据时,HBase服务端根据聚合表描述中的列聚合属性信息,将存在多版本的数据进行聚合并将结果保留,非结果数据合并操作执行完后被清除。本发明专利技术所公开的方法,相对于现有技术无论是在聚合表查询的实时性方面、性能方面以及资源使用方面都有较好的提升。

A method of column aggregation for HBase

The present invention discloses a method of column aggregation of HBASE, based on the HBase server end query mechanism, the system architecture of the method is set up with the aggregation scanner module, and extends the description information of the aggregate table, in which the column aggregation properties are added; in the query, the multi version data of the same cell based on the column aggregation is carried out according to the column aggregation. Aggregations are made to achieve aggregation on a cell; when the data is merged, the HBase server converge the multiple versions of the data and retain the results based on the column aggregation attribute information in the aggregate table description, and the non result data merge operation is cleared after the execution of the non result data merge operation. The method disclosed by the invention has better improvement than the existing technology in terms of real-time performance, performance and resource use in the aggregation table query.

【技术实现步骤摘要】
一种HBase的列聚合方法
本专利技术公开了一种HBase的列聚合方法,涉及计算机信息存储

技术介绍
HBase是一个参考Google的BigTable实现的高可靠性、高性能、面向列、可伸缩的开源非关系型数据库,采用HDFS作为底层存储。随着大数据技术的发展和应用,HBase逐渐成为业界广泛使用的NoSQL分布式存储系统,它具有高可靠、面向列、开源等特点,已被Facebook、阿里巴巴等公司成功用于生产系统。HBase数据模型如下表所示:HBase最基本的单位是列(Column、Qualifier);一个列或者多个列形成了一个列簇(Family、Store),一个列簇或者多个列簇形成了一行(Row),并由唯一的行键(RowKey)来确定存储;每个列有可能有多个版本(TimeStamp),存储在同一个单元格(Cell)中,例如图中的value1。HBase合并(Compact):列簇下的每个HFile保存了多个版本的数据,合并就是将同一个列簇下的多个HFile多个版本的数据按照是否过期、最多保留版本个数有选择的将部分最新版本的数据合并在一个新的HFile中,清除其他版本的数据,以提高查询的性能。聚合表的更新操作包括:聚合数据:对一组数据进行聚合操作(如平均值、最大、最小等)并返回确定的结果,该结果称为聚合数据。聚合表是指:结合业务需求,在HBase中存储包含聚合数据的表;从HBase角度看,该表就是一个普通的用户表,所以在存储数据时,需要先将数据读出来和现在的数据进行聚合运算,将结果再写到HBase中(称为Read-Write方案)。目前被广泛使用的对HBase聚合表更新的方案有两种:一、MapReduce聚合方案该方案需要设计两张表:一张数据表存储所有冗余的数据,一张聚合表存储MapReduce计算后的聚合数据;通过批量入库或者实时入库将待入库数据存储到HBase数据表中;MapReduce聚合任务定期的对数据表进行全表扫描,将数据聚合运算后的结果存储到HBase聚合表中供客户端查询。客户端通过HBase查询API可直接读取聚合数据。该方案的流程如图1所示。二、Scan&Endpoint聚合方案该方案需要设计一张数据表存储所有冗余的数据;通过批量入库或者实时入库将待入库数据存储到HBase数据表中;客户端聚合查询时,先在Region级别上对每个region的数据进行聚合运算,再在Table级别上对所有的region聚合结果进行聚合运算,最后将结果返回给客户端。该方案的流程如图2所示。现有的聚合方案的主要问题有:1)MapReduce聚合方案:实际采用Read-Write的方法,即先读取出来库里面已有的值,计算后重新写入,增加了IO请求;MapReduce每次需要重新扫描表的所有数据,重复计算比较大,计算资源浪费;MapReduce批量计算实时性比较差;无法支持对流式数据入库,只能以固定的文件作为输入。2)Scan&Endpoint聚合方案:每次聚合查询需要把所有的相关数据都查询出来进行聚合运算,需要使用较多的资源,而且容易出现超时异常,影响查询性能;数据表中需要聚合的历史数据需要长期保存,增加了数据冗余,耗费存储,聚合查询性能越来越慢,资源浪费越来越大;Scan&Endpoint服务端只能实现同一个region上的聚合,客户端还需要二次聚合操作。
技术实现思路
本专利技术所要解决的技术问题是:出于对聚合数据的实时性和查询性能的考虑,针对现有技术的缺陷,提供一种HBASE的列聚合方法,在表描述信息中增加列聚合属性,为查询和合并提供了选择聚合方式的依据;一种列聚合扫描器,该扫描器在查询数据时,根据列聚合属性将数据进行聚合运算,返回运算结果;一种聚合合并数据,根据列聚合属性进行多版本数据合并操作,将合并结果保存,清理掉其他版本的历史数据。本专利技术为解决上述技术问题采用以下技术方案:一种HBase的列聚合方法,基于HBase服务端查询机制,所述方法的系统架构中设置有聚合扫描器模块,并且扩展HBase表的描述信息,在其中增加列聚合属性;在查询时,根据列聚合属性对同一单元格的多版本数据进行聚合计算,实现在单元格上的聚合;在合并数据时,HBase服务端根据HBase表描述中的列聚合属性信息,将存在多版本的数据进行聚合并将结果保留,非结果数据合并操作执行完后被清除。作为本专利技术的进一步优选方案,所述列聚合属性记录了聚合的列和聚合的方式。作为本专利技术的进一步优选方案,所述聚合的方式包括平均、最大、最小、最近、最早或者求和等,用户根据具体业务扩展聚合的方式。作为本专利技术的进一步优选方案,在所述聚合扫描模块中,每个单元格根据列聚合属性,选择不同的聚合方式对所有的HFile和写缓存的同一单元格数据进行聚合计算。作为本专利技术的进一步优选方案,查询的流程具体包括:1、构造Region扫描器:HBase服务端接收到客户端的读请求,HBase服务端根据请求对应的Region构造扫描器,所述扫描器是由多个聚合扫描器组成的最小堆构成的,所述聚合扫描器由多个HFile扫描器和内存扫描器组成的最小堆构成的,HFile扫描器读取文件服务器上的HFile数据,内存扫描器读取内存中的数据;2、从聚合扫描器中获取堆顶的KeyValue:HBase服务端循环的从聚合扫描器的堆顶获取最小的KeyValue,匹配当前KeyValue是否满足查询条件:如果匹配不中,再从聚合扫描器中取最小的KeyValue,直到命中或者取完一行数据;如果匹配命中,进入下一步;3、聚合列的同一单元格的KeyValue聚合:如果匹配中的KeyValue所属的列数据聚合列,将该KeyValue加到缓存中;判断下一个KeyValue和当前KeyValue是否属于同一单元格:如果属于,缓存当前的KeyValue;如果不属于,将缓存的同一单元格的所有KeyValue按照聚合属性进行聚合操作后将结果放到缓存列表中;如果聚合扫描器中还有更多满足条件的KeyValue,执行第二步;否则,将结果缓存列表返回给Region扫描器;4、KeyValue返回给上一层的Region扫描器:当所有的聚合扫描器满足条件的KeyValue全部获取或者没有更多的满足条件的KeyValue后,将缓存的结果返回给Region扫描器,Region扫描器将结果经过Filter过滤返回给客户端。作为本专利技术的进一步优选方案,合并数据的具体流程包括:1、构造聚合扫描器:HBase服务端接收到合并请求或者HBase服务端自身触发的合并请求,HBase服务端根据请求对应的列簇构造聚合扫描器,聚合扫描器由多个HFile扫描器组成的最小堆构成的,HFile扫描器读取HDFS上的HFile数据,并创建新的HFile;2、从聚合扫描器中获取堆顶KeyValue:HBase服务端循环的从聚合扫描器的堆顶获取满足查询条件的最小的KeyValue;判断该KeyValue所属的列是否需要聚合:如果不需要,将该KeyValue添加到新的HFile中;如果需要聚合,执行下一步;3、聚合列的同一单元格的KeyValue聚合:如果匹配中的KeyValue所属的列数据聚合列,判断下一个KeyValue和当前KeyValue是否本文档来自技高网
...

【技术保护点】
1.一种HBase的列聚合方法,基于HBase服务端查询机制,其特征在于:所述方法的系统架构中设置有聚合扫描器模块,并且扩展HBase表的描述信息,在其中增加列聚合属性;在查询时,根据列聚合属性对同一单元格的多版本数据进行聚合计算,实现在单元格上的聚合;在合并数据时,HBase服务端根据HBase表描述中的列聚合属性信息,将存在多版本的数据进行聚合并将结果保留,非结果数据合并操作执行完后被清除。

【技术特征摘要】
1.一种HBase的列聚合方法,基于HBase服务端查询机制,其特征在于:所述方法的系统架构中设置有聚合扫描器模块,并且扩展HBase表的描述信息,在其中增加列聚合属性;在查询时,根据列聚合属性对同一单元格的多版本数据进行聚合计算,实现在单元格上的聚合;在合并数据时,HBase服务端根据HBase表描述中的列聚合属性信息,将存在多版本的数据进行聚合并将结果保留,非结果数据合并操作执行完后被清除。2.如权利要求1所述的一种HBase的列聚合方法,其特征在于:所述列聚合属性记录了聚合的列和聚合的方式。3.如权利要求2所述的一种HBase的列聚合方法,其特征在于:所述聚合的方式包括平均、最大、最小、最近、最早或者求和,用户根据具体业务扩展聚合的方式。4.如权利要求1所述的一种HBase的列聚合方法,其特征在于:在所述聚合扫描模块中,每个单元格根据列聚合属性,选择不同的聚合方式对所有的HFile和写缓存的同一单元格数据进行聚合计算。5.如权利要求1所述的一种HBase的列聚合方法,其特征在于,查询的流程具体包括:1、构造Region扫描器:HBase服务端接收到客户端的读请求,HBase服务端根据请求对应的Region构造扫描器,所述扫描器是由多个聚合扫描器组成的最小堆构成的,所述聚合扫描器由多个HFile扫描器和内存扫描器组成的最小堆构成的,HFile扫描器读取文件服务器上的HFile数据,内存扫描器读取内存中的数据;2、从聚合扫描器中获取堆顶的KeyValue:HBase服务端循环的从聚合扫描器的堆顶获取最小的KeyValue,匹配当前KeyValue是否满足查询条件:如果匹配不中,再从聚合扫描器中取最小的KeyValue,直到命中或者取完一行数据;如果匹配命中,进入下一步;3、聚合列的同一单元格的KeyValue聚合:如果匹配中的KeyValue所属的列数据聚合列,将该KeyValue加到缓存中;判断下一个KeyValue和当前KeyValue是...

【专利技术属性】
技术研发人员:崔博曹俊亮周帅锋王勇强
申请(专利权)人:西安烽火软件科技有限公司
类型:发明
国别省市:陕西,61

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

1