一种HBase二级索引自适应优化方法和系统技术方案

技术编号:21199861 阅读:36 留言:0更新日期:2019-05-25 01:15
本发明专利技术涉及一种HBase二级索引自适应优化方法和系统。该方法的步骤包括:1)将客户端对HBase的变更操作通过观察者协处理器组件同步映射到分布式搜索引擎ES的索引中,并由ES维护HBase中数据对应的倒排索引,作为HBase的二级索引;2)对所述二级索引进行增量更新,包括增量更新本地索引、增量更新全局索引、增量更新ES索引;3)将跨表、跨库更新HBase索引表和ES索引表的索引更新请求同步到所述二级索引;4)接收客户端发出的数据查询请求,通过本地索引、全局索引和ES索引获得查询结果,并返回给客户端。本发明专利技术支持单列索引、联合索引、全文索引等多种索引模式,能够极大地提高检索效率。

An adaptive optimization method and system for HBase secondary index

The present invention relates to an adaptive optimization method and system for HBase secondary index. The steps of this method include: 1) mapping the client's change operation to the index of distributed search engine ES synchronously through the observer coprocessor component, and maintaining the inverted index corresponding to the data in HBase as the secondary index of HBase by ES; 2) updating the secondary index incrementally, including updating the local index incrementally, updating the global index incrementally, and updating the ES incrementally. Index; 3) Synchronize the index update requests of HBase index table and ES index table across tables and libraries to the secondary index; 4) Receive the data query requests from the client, obtain the query results through local index, global index and ES index, and return them to the client. The invention supports multiple indexing modes such as single column index, joint index, full-text index, and can greatly improve the retrieval efficiency.

【技术实现步骤摘要】
一种HBase二级索引自适应优化方法和系统
本专利技术属于数据处理
,涉及一种HBase二级索引自适应优化的方法和系统,智能支持单列索引、联合索引、全文索引等多种索引模式,设计了自适应优化的索引格式和索引存储方案,在不同类型的检索任务中这些索引可以被高效智能利用,极大地提高了检索效率。
技术介绍
HBase是一种基于列存储的分布式数据库,作为开源分布式批处理框架Hadoop生态圈的核心组件,以良好的写性能,极佳的可扩展性,稳定的数据存储,在众多一线互联网企业的存储架构中发挥着关键作用,是海量数据的理想存储介质。由于HBase对表中的主键(RowKey)建立了索引,因此基于主键作为检索条件查询效率非常高。然而HBase并不支持创建非主键列的索引,所以对非主键列进行条件查询需要扫描全表,效率低下。为了解决对非主键列查询耗时太长的问题,现有技术通过在客户端维护索引表以建立被查询的列与主键的对应关系,检索时通过索引表获取满足条件的主键集合,然后再根据查找到的主键在数据表中获取完整记录。因为是在客户端同时维护数据表与索引表的一致性,所以如要建立新的索引,还需修改客户端代码,增加了客户端代码的冗余和复杂性,而且在客户端维护索引一致性会产生多余的远程方法调用,导致程序效率低下。HBase本身不支持全文搜索功能,可通过ElasticSearch(当前被广泛使用的搜索引擎,简称ES)构建HBase中数据的全文索引,但是需将HBase中的数据实时增量同步到ES中,当前Logstash(ES生态系统相关项目,用于数据采集)官方并没有推出可以满足项目需求的数据同步组件用于将HBase中新增的数据实时增量同步到ES。
技术实现思路
为解决上述问题,弥补HBase在检索方面的劣势,本专利技术设计了一套独有的HBase二级索引技术。本专利技术采用的技术方案如下:一种HBase二级索引自适应优化的方法,包括以下步骤:1)将客户端对HBase的变更操作通过观察者协处理器组件ObserverCoprocessor同步映射到分布式搜索引擎ES的索引中,并由ES维护HBase中数据对应的倒排索引,作为HBase的二级索引;2)对所述二级索引进行增量更新,包括增量更新本地索引、增量更新全局索引、增量更新ES索引;3)将跨表、跨库更新HBase索引表和ES索引表的索引更新请求同步到所述二级索引;4)接收客户端发出的数据查询请求,通过本地索引、全局索引和ES索引获得查询结果,并返回给客户端。下面进一步说明上述步骤:1)创建索引与索引元信息管理。用户通过提供的客户端接口所创建的索引信息应该被合理的保存,这些元数据信息是自适应动态构建索引和批量构建索引的依据,也是用户进行查询时自动利用索引加速查询过程的依据。为更好的利用HBase提供的各种钩子(Hook)函数去捕获用户创建、更改索引的动作,将索引元数据存储于HBase的表描述器(HTableDescriptor)中的配置器Configuration中,如果对HTableDescriptor进行任何的修改,都可以通过基本协处理器(BaseMasterObserver)中的预修改表(preModifyTable)进行获取。2)索引增量更新索引增量更新分为三类,增量更新本地索引、增量更新全局索引、增量更新ES索引。本专利技术自适应支持索引的三类增量更新。系统可自适应感知不同场景,动态、智能支持不同类型索引的透明增量更新。3)索引同步索引同步是将跨表、跨库更新HBase索引表和ES索引表的索引更新请求同步到目标索引,从而避免同步更新索引数据的一些弊端,充分利用批处理提高同步过程的安全性和高效性。在实现同步过程中使用Kafka(一种开源的分布式消息队列)安全存储数据,使用ZooKeeper(一种开源的分布式协调服务组件)用于通知用户接收新主题(Topic)中的消息。4)索引查询索引数据可以存储于索引列族、索引表、ES中,针对不同类型的索引数据需要相应的子查询接口与请求参数,然后将子查询接口获取到的结果进行整合、过滤,将最终满足条件的结果返回给用户。在本专利技术实现中,如所有的子查询条件都是针对全局索引或者都是针对本地索引采用了迭代器实现,可分批获取结果集,如果子查询条件有全局索引也有本地索引,暂不支持迭代查询。大部分情形下,为某特定表建立索引要么都建立为全局索引,要么全部建立为本地索引,所以该实现可以满足大部分应用场景。5)索引批处理索引批处理包括批量构建全局索引、批量构建本地索引、批量构建全文索引。该部分采用SnapshotScanMR+BulkLoadFiles的方式批量构建索引。与上面方法对应地,本专利技术还提供一种HBase二级索引自适应优化系统,其包括:索引创建模块,负责将客户端对HBase的变更操作通过观察者协处理器组件ObserverCoprocessor同步映射到分布式搜索引擎ES的索引中,并由ES维护HBase中数据对应的倒排索引,作为HBase的二级索引;索引进行增量更新模块,负责对建立的二级索引进行增量更新,包括增量更新本地索引、增量更新全局索引、增量更新ES索引;索引同步模块,负责将跨表、跨库更新HBase索引表和ES索引表的索引更新请求同步到二级索引;索引查询模块,负责接收客户端发出的数据查询请求,通过本地索引、全局索引和ES索引获得查询结果,并返回给客户端。进一步地,还包括索引批处理模块,用于批量构建全局索引、批量构建本地索引、批量构建全文索引、本专利技术的有益效果如下:本专利技术为支持单列索引、联合索引、全文索引等,设计了不同的索引格式和索引存储方案,在不同类型的检索任务中这些索引可以被高效利用,极大提高检索效率;为实现在HBase服务端自动维护数据与索引的一致性,通过对协处理器框架和HBase源码的研究,扩充HBase服务端的功能,使二级索引功能成为HBase的一部分;为尽量减小在更新索引时对正常数据插入效率的影响,采用了基于消息中间件的方式实现数据与索引的最终一致性;为满足对千亿级别威胁情报库实时聚合查询的需要,本专利技术基于Redis(一种开源分布式内存数据库)实现预聚合功能,可以达到毫秒级查询效率,并基于此实现基于时间序列的统计查询功能;提供客户端查询接口,对查询表达式进行解析,选择最优的索引提高检索过程的效率,并可在占用较小内存情况下完成对海量结果集的获取。附图说明图1.本专利技术的HBase二级索引优化整体框架图。图2.本专利技术创建HBase二级优化索引的时序图。图3.本专利技术基于消息中间件实现跨结点更新索引的示意图。图4.本专利技术的HBase二级索引查询模块工作流程图。图5.本专利技术的预聚合模块系统设计图。图6.本专利技术的批量构建索引流程图。具体实施方式为了使本
的人员更好地理解本专利技术实施例中的技术方案,并使本专利技术的目的、特征和优点能够更加明显易懂,下面结合附图和事例对本专利技术中技术核心作进一步详细的说明。在本专利技术中提出了一种HBase二级索引自适应优化的方法。图1是该方法的整体框架图,其中ObserverCoprocessor是观察者协处理器,HRegionServer是分片服务器,UserTableRegion是用户表分区,DataFam是名为Fam的数据,AA—>col1:1表示列族本文档来自技高网
...

【技术保护点】
1.一种HBase二级索引自适应优化方法,其特征在于,包括以下步骤:1)将客户端对HBase的变更操作通过观察者协处理器组件Observer Coprocessor同步映射到分布式搜索引擎ES的索引中,并由ES维护HBase中数据对应的倒排索引,作为HBase的二级索引;2)对所述二级索引进行增量更新,包括增量更新本地索引、增量更新全局索引、增量更新ES索引;3)将跨表、跨库更新HBase索引表和ES索引表的索引更新请求同步到所述二级索引;4)接收客户端发出的数据查询请求,通过本地索引、全局索引和ES索引获得查询结果,并返回给客户端。

【技术特征摘要】
1.一种HBase二级索引自适应优化方法,其特征在于,包括以下步骤:1)将客户端对HBase的变更操作通过观察者协处理器组件ObserverCoprocessor同步映射到分布式搜索引擎ES的索引中,并由ES维护HBase中数据对应的倒排索引,作为HBase的二级索引;2)对所述二级索引进行增量更新,包括增量更新本地索引、增量更新全局索引、增量更新ES索引;3)将跨表、跨库更新HBase索引表和ES索引表的索引更新请求同步到所述二级索引;4)接收客户端发出的数据查询请求,通过本地索引、全局索引和ES索引获得查询结果,并返回给客户端。2.根据权利要求1所述的方法,其特征在于,步骤1)利用HBase提供的各种钩子函数捕获用户创建、更改索引的动作,将索引元数据存储于HBase的表描述器HTableDescriptor中的配置器中,对HTableDescriptor进行任何的修改,都通过基本协处理器中的预修改表进行获取。3.根据权利要求1所述的方法,其特征在于,步骤1)包括:1.1)用户在客户端通过创建索引函数发出建立索引请求;1.2)服务端根据建立索引请求调用修改表函数向表描述器添加“Fam”索引的配置信息;1.3)通过协处理器主机调用配置文件hbase-site.xml中加载的主观察器中自定义的预修改表函数,将用户请求建立的“Fam”索引信息正式添加入表描述器;1.4)动态加载相应的协处理器,如果相应的协处理器已经存在则不需再次添加;1.5)在配置器中添加相应的配置元信息,相应的分片服务器重新获取新的索引元数据信息,并触发在Kafka中建立主题,用于存储异步传输的更新索引请求;1.6)触发在分布式协调服务组件ZooKeeper中建立/secondary_index/newTopic的请求,消息队列Kafka中的消费者通过观察器节点,发现需要消费的主题并接收其中的消息。4.根据权利要求1所述的方法,其特征在于,步骤2)所述增量更新包括:2.1)分片服务器HRegionServer向主服务器Master通知本分片上线之前预打开函数preOpen首先被调用,在该preOpen函数中直接初始化必要信息,使得预添加函数prePut、预删除函数preDelete直接使用索引元信息,提高观察器Observer的执行效率;2.2)通过预添加函数prePut获取用户的添加数据请求,根据索引元数据提取添加函数Put中的索引数据;检查添加Put函数的主键RowKey是否已经在,如果有该行记录并且在添加数据时覆盖了已建立索引的列,则将旧的索引删掉然后再添加新的索引,以避免无效的索引数据造成无效的查询结果;2.3)通过预删除函数preDelete获取用户的删除数据请求;如果用户的删除数据请求中只包含主键RowKey不包含数据,则HBase删除整行记录,如果删除数据请求中包含指定的列,则会在HBase中只删除指定的列。5.根据权利要求1所述的方法,其特征在于,步骤3)在实现同步的过程中使用分布式消息队列Kafka安全存储数据,使用分布式协调服务组...

【专利技术属性】
技术研发人员:刘松宋秉华杜翔宇卢志刚姜政伟刘宝旭
申请(专利权)人:中国科学院信息工程研究所
类型:发明
国别省市:北京,11

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

1