CN111984756A - 一种实现Hbase二级索引的方法 - Google Patents

一种实现Hbase二级索引的方法 Download PDF

Info

Publication number
CN111984756A
CN111984756A CN202010772018.9A CN202010772018A CN111984756A CN 111984756 A CN111984756 A CN 111984756A CN 202010772018 A CN202010772018 A CN 202010772018A CN 111984756 A CN111984756 A CN 111984756A
Authority
CN
China
Prior art keywords
lucene
hbase
index
storage
hfile
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202010772018.9A
Other languages
English (en)
Inventor
母延年
于昆鹏
陈雨
孙国良
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing Haoyu Technology Co ltd
Original Assignee
Nanjing Haoyu Technology Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nanjing Haoyu Technology Co ltd filed Critical Nanjing Haoyu Technology Co ltd
Priority to CN202010772018.9A priority Critical patent/CN111984756A/zh
Publication of CN111984756A publication Critical patent/CN111984756A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/31Indexing; Data structures therefor; Storage structures
    • G06F16/316Indexing structures
    • G06F16/319Inverted lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/13File access structures, e.g. distributed indices
    • G06F16/134Distributed indices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及大数据查询处理技术领域,具体公开了一种实现Hbase二级索引的方法,包括如下步骤,S1:Hbase store中进行扩展,在原先存储结构的基础上扩展一层lucene索引,lucene索引与MemStore和StoreFile位于同一个进程内,不需要跨进程交互;S2:将lucene作为对Hfile的补充,与Hbase上层写入对接,写入Hfile或MemStore的同时也会将数据写入到lucene,且lucene索引也会随着store的逻辑进行合并或拆分操作;S3:lucene的存储与Hfile一样,基于HDFS存储,存储规则与HDFS相同,基于表名,列簇,regin分散在不同的HDFS目录上;S4:查询时,结合scan根据不同的查询,自动适配查询,原有的逻辑转发到lucene之上,借助lucene实现Hbase二级索引的功能;本发明补足了Hbase只能做KV查询的局限性,使得Hbase既有KV查询性能,又有lucene全文检索、多维筛选的特性。

Description

一种实现Hbase二级索引的方法
技术领域
本发明涉及大数据查询处理技术领域,具体为一种实现Hbase二级索引的方法。
背景技术
近年来,随着物联网、社交网络、云计算等技术不断融入我们的生活以及现有的计算能力、存储空间、网络带宽的高速发展,人类积累的数据在互联网、通信、金融、商业、医疗等诸多领域不断地增长和累积。到 2020 年,平均下来,一个人每天会产生 1.5GB 的数据,每辆车会产生 4TB 的数据,每架飞机会产生 40TB 的数据,每个小型的工厂会产生 1PB的数据。
如此巨大的数据面临的主要问题:
1:不同场景需使用不同的系统,学习与维护成本高。
2:每个系统里都要单独存放一份数据,数据存储成本高。
3:多个系统之间交互麻烦,会形成数据孤岛。
Hbase是一个开源的非关系型分布式数据库,它参考了谷歌的BigTable建模,实现的编程语言为Java。它是Apache软件基金会的Hadoop项目的一部分,运行于HDFS文件系统之上,为Hadoop提供类似于BigTable规模的服务。因此,它可以容错地存储海量稀疏的数据。Hbase是一个高可靠、高性能、面向列、可伸缩的分布式数据库,是谷歌BigTable的开源实现,主要用来存储非结构化和半结构化的松散数据。Hbase的目标是处理非常庞大的表,可以通过水平扩展的方式,利用廉价计算机集群处理由超过10亿行数据和数百万列元素组成的数据表。
Lucene是apache软件基金会jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。作为一套用于全文检索和搜寻的开源程式库,Lucene提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻,在Java开发环境里是一个成熟的免费开源工具。就其本身而言,Lucene是当前以及最近几年最受欢迎的免费Java信息检索程序库。人们经常提到信息检索程序库,虽然与搜索引擎有关,但不应该将信息检索程序库与搜索引擎相混淆。
一般Hbase查询都是通过rowKey进行get或scan查询,rowkey索引单一,无法支撑复杂的多条件组合查询,如果要对多个查询条件构成多维度的组合查询,根据不同组合进行筛选则实现不了或效率低下。故需要在原有rowkey的基础上设计出二级索引,从而满足多条件查询,而二级索引的本质就是建立不同列的值与rowkey的对应关系。
目前业界基于二级索引的实现,均是在Hbase的上层,通过设计不同的rowkey来建立不同级别的二级索引映射。典型的如Phoenix的实现。
这种二级索引实现的缺点:
1、基于Hbase的上层,数据要从Hbase中读取出来,再进一步处理。数据的读取成本很高,需要由Hfile转移到Hbase客户端,再转移到二级索引系统里进行二次处理,通过二级索引匹配到满足条件的rowkey。最终再次根据这些rowkey与Hbase进行交互得到匹配到的数据。这种实现交互次数太多,数据会在多个系统之间多次迁移,如果命中的数据很多,效率非常低下。
2、有倾斜的key会成为瓶颈:如性别,省份这种数据列,一个值对应的结果会非常多,一次key/value的get,因对应的数据量太多,会直接将二级索引系统击垮。在数据key存在倾斜的情况下整体处理性能不会随着机器设备资源的线性增加而提升。
3、多个条件组合查询,会将上述情况进一步放大,每个条件的二级索引都要经由上述二级索引的每个过程,后续再进行与或非的处理后可能大部分的记录都不再需要,最终这些记录会被抛弃。但是已经发生了数据由Hbase系统内迁移到Hbase系统外的过程,白白浪费了大量的系统资源。
4、不能分布式处理:往往这类二级索引的实现,会迁移到单个进程内,进行单一处理,如果单个进程命中的数据量很多,整体的二级索引处理时间会非常长。
5、数据膨胀太高:每种二级索引都是一份独立存储,整个系统会随着二级索引的增多,数据膨胀变得非常严重。
发明内容
本发明的目的在于提供一种实现Hbase二级索引的方法,以解决上述背景技术中提出的问题。
为实现上述目的,本发明提供如下技术方案:一种实现Hbase二级索引的方法,包括如下步骤:
S1:Hbase store中进行扩展,在原先存储结构的基础上扩展一层lucene索引,lucene索引与MemStore和StoreFile位于同一个进程内,不需要跨进程交互;
S2:将lucene作为对Hfile的补充,与Hbase上层写入对接,写入Hfile或MemStore的同时也会将数据写入到lucene,且lucene索引也会随着store的逻辑进行合并或拆分操作;
S3:lucene的存储与Hfile一样,基于HDFS存储,存储规则与HDFS相同,基于表名,列簇,regin分散在不同的HDFS目录上;
S4:查询时,结合scan根据不同的查询,自动适配查询,原有的逻辑转发到lucene之上,借助lucene实现Hbase二级索引的功能。
优选的,所述步骤S1中,Hbase原有存储结构为MemStore与StoreFile。
优选的,所述步骤S2中,Hbase正常入库写Hfile与Memstore的同时,也会对lucene索引进行同步更新;当Hstore进行合并或拆分操作的时候,对应的lucene索引同步进行合并与拆分操作。
优选的,所述步骤S3中,lucene的存储采用基于HDFS分布式文件系统的方式。
优选的,所述步骤S4中,查询的时候根据不同的查询或统计特征,自动适配选择是从之前的Hfile存储结构进行KV查询还是从lucene中进行全文检索或多条件查询,从而实现Hbase二级索引的功能。
与现有技术相比,本发明的有益效果是:
1、二级索引之间的交互基于同一个进程内部交互,减少了跨进程跨系统交互,从而提升性能;
2、lucene对于性别和省份这种有倾斜的key,会通过倒排系统得到非常好的处理;且因为支持了合并与分裂特性,会让有倾斜的key分散到不同的regin server上,从而达到线性处理与扩展的目的;
3、在多条件组合查询上,该方面是lucene本身查询的强项,结合倒排索引与跳跃表的特点,可以将多条件组合查找的性能发挥到极致;
4、计算基于regin server内部完成,无需抽取到额外的二级索引中处理,而每个reginserver内部是独立计算的,整体上是分布式并行计算的,这种方式相对于传统二级索引的只能单个进程来实现而言,响应速度会提升很多;
5、lucene倒排索引自身数据膨胀率不高,不会将每种数据进行组合,而是通过倒排表与跳跃表实现组合查询,从而数据相对于常规二级索引的膨胀会减少很多。
附图说明
图1为本发明的结构示意图;
图2为本发明的Hbase内部regin server维护lucene数据索引存储示意图;
图3为本发明的Hbase客户端检索索引并返回数据示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1-3,本发明提供一种技术方案:一种实现Hbase二级索引的方法,包括如下步骤:
S1:Hbase store中进行扩展,在原先存储结构的基础上扩展一层lucene索引,lucene索引与MemStore和StoreFile位于同一个进程内,不需要跨进程交互;
S2:将lucene作为对Hfile的补充,与Hbase上层写入对接,写入Hfile或MemStore的同时也会将数据写入到lucene,且lucene索引也会随着store的逻辑进行合并或拆分操作;
S3:lucene的存储与Hfile一样,基于HDFS存储,存储规则与HDFS相同,基于表名,列簇,regin分散在不同的HDFS目录上;
S4:查询时,结合scan根据不同的查询,自动适配查询,原有的逻辑转发到lucene之上,借助lucene实现Hbase二级索引的功能。
进一步的,所述步骤S1中,Hbase原有存储结构为MemStore与StoreFile。
进一步的,所述步骤S2中,Hbase正常入库写Hfile与Memstore的同时,也会对lucene索引进行同步更新;当Hstore进行合并或拆分操作的时候,对应的lucene索引同步进行合并与拆分操作。
进一步的,所述步骤S3中,lucene的存储采用基于HDFS分布式文件系统的方式。
进一步的,所述步骤S4中,查询的时候根据不同的查询或统计特征,自动适配选择是从之前的Hfile存储结构进行KV查询还是从lucene中进行全文检索或多条件查询,从而实现Hbase二级索引的功能。
工作原理:在步骤S1中,索引建立之后,在Hbase进程中维护原本Hfile以及新加入的lucene。在查询交互上,原始的Hbase存储结构会与lucene在同一个进程内部进行交互,而不是通过跨越多个系统或进程进行数据交互。
在步骤S2中,索引建立之后,以HStore(列簇)为单位构建索引,二级索引数据存储在lucene中,原始的KV数据依然存储在MemStore与StoreFile中;在Hbase进程中维护原本hfile以及新加入的lucene的合并、删除与更新,两者保持同步。Hbase的region server是可以进行分裂的,改造后数据分裂规则按照Hbase的分裂规则保持不变,新增的lucene也会随着一起分裂,这样lucene二级索引与原本的MemStore与StoreFile的合并分裂保持一致。通过这种特性集群的扩容,缩容都可以支持,重新分布数据也方便。由于lucene自身不具备索引分裂的特性,针对lucene的分裂采用如下方式实现,1)索引数据首先从父region分别整体拷贝到每个子region;2)在索引中建立RowKey索引字段,用于分裂后索引数据的删除;3)在每个子region中删除不满足K/V范围的数据。4)由于索引的复制会消耗比较多的资源,故这里的复制并未采用硬复制,而是软复制,仅仅在圆目录与目标目录之间建立一个类型linux文件软连接的方式,是一种软引用,而并非真实的数据复制。
步骤S3中,lucene索引也会存储在hdfs中,而不是保存在数据本地。步骤S4中,查询过程中的多条件检索,会根据不同的查询方式,选择使用lucene或者使用Hbase原有的kv方式,而这些都不需要将所有数据的查询出来,再进行二次过滤,而是通过索引内部直接定位到相关记录。抛出给上游的进程或系统则越少越好。内部多个条件二级索引的与或非匹配,也均是在同一个进程内独立处理完毕,而不是跨越多个进程。
在Hbase在数据导入的时候,除了在Hbase的每个regin server内部,维护自身的memstore与filestore外,会额外增加一个新的lucene索引结构作为二级索引所使用,这个lucene的合并与分离逻辑与原本Hbase内部的hstore保持一致。进程中通过接口将查询条件直接作用在数据底端,也即Hbase的每个regin server锁维护的每个store内,也即是在数据底端,最靠近数据的位置进行二级索引筛选与过滤,而不是像其他的二级索引,将数据先查询到系统的顶端,在顶端进行二级索引的处理,这减少了数据跨系统的多次交互。也通过了数据的切分,让二级索引可以分布式与并行的处理。
发明的整体思想是在原始的Hbase检索上添加了一层二级索引功能,而这个二级索引与其他二级索引的不同之处是,其直接作用在Hbase底层数据存储的最底端,目前是通过lucene实现的;通过在靠近数据存储位置的底端,加的二级索引实现,解决了Hbase当前在二级索引在效率,分布式,并行,数据膨胀,数据倾斜等方面的不足。
如图2所示,为Hbase维护lucene数据索引存储过程。在Hbase的regin server内部原有的每个store内部,添加了一层lucene索引,让lucene与 memstore与storefile组合使用,新增加的lucene结构其管理也由hregin 统一管理。如图3所示,为Hbase客户端检索索引并返回数据过程,使用Hbase 的查询接口结合master协调后,会直接将查询筛选条件直接分发到regin server,每个regin server会将查询请求直接作用在最接近数据的最底端lucene与hfile,在实现二级索引的同时,还保持了非常高的性能,减少了 数据跨越进程导出的量,查询和统计在同一个进程内完成。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。

Claims (5)

1.一种实现Hbase二级索引的方法,其特征在于:包括如下步骤:
S1:Hbase store中进行扩展,在原先存储结构的基础上扩展一层lucene索引,lucene索引与MemStore和StoreFile位于同一个进程内,不需要跨进程交互;
S2:将lucene作为对Hfile的补充,与Hbase上层写入对接,写入Hfile或MemStore的同时也会将数据写入到lucene,且lucene索引也会随着store的逻辑进行合并或拆分操作;
S3:lucene的存储与Hfile一样,基于HDFS存储,存储规则与HDFS相同,基于表名,列簇,regin分散在不同的HDFS目录上;
S4:查询时,结合scan根据不同的查询,自动适配查询,原有的逻辑转发到lucene之上,借助lucene实现Hbase二级索引的功能。
2.根据权利要求1所述的一种实现Hbase二级索引的方法,其特征在于:所述步骤S1中,Hbase原有存储结构为MemStore与StoreFile。
3.根据权利要求1所述的一种实现Hbase二级索引的方法,其特征在于:所述步骤S2中,Hbase正常入库写Hfile与Memstore的同时,也会对lucene索引进行同步更新;当Hstore进行合并或拆分操作的时候,对应的lucene索引同步进行合并与拆分操作。
4.根据权利要求1所述的一种实现Hbase二级索引的方法,其特征在于:所述步骤S3中,lucene的存储采用基于HDFS分布式文件系统的方式。
5.根据权利要求1所述的一种实现Hbase二级索引的方法,其特征在于:所述步骤S4中,查询的时候根据不同的查询或统计特征,自动适配选择是从之前的Hfile存储结构进行KV查询还是从lucene中进行全文检索或多条件查询,从而实现Hbase二级索引的功能。
CN202010772018.9A 2020-08-04 2020-08-04 一种实现Hbase二级索引的方法 Pending CN111984756A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010772018.9A CN111984756A (zh) 2020-08-04 2020-08-04 一种实现Hbase二级索引的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010772018.9A CN111984756A (zh) 2020-08-04 2020-08-04 一种实现Hbase二级索引的方法

Publications (1)

Publication Number Publication Date
CN111984756A true CN111984756A (zh) 2020-11-24

Family

ID=73444476

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010772018.9A Pending CN111984756A (zh) 2020-08-04 2020-08-04 一种实现Hbase二级索引的方法

Country Status (1)

Country Link
CN (1) CN111984756A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112612805A (zh) * 2020-12-24 2021-04-06 北京浪潮数据技术有限公司 一种hbase数据索引到查询引擎的方法和相关装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112612805A (zh) * 2020-12-24 2021-04-06 北京浪潮数据技术有限公司 一种hbase数据索引到查询引擎的方法和相关装置
CN112612805B (zh) * 2020-12-24 2023-12-22 北京浪潮数据技术有限公司 一种hbase数据索引到查询引擎的方法和相关装置

Similar Documents

Publication Publication Date Title
Ali et al. Comparison between SQL and NoSQL databases and their relationship with big data analytics
Gessert et al. NoSQL database systems: a survey and decision guidance
Borkar et al. Have your data and query it too: From key-value caching to big data management
Lu et al. An efficient and compact indexing scheme for large-scale data store
Tian et al. A survey of spatio-temporal big data indexing methods in distributed environment
Iyer et al. A scalable distributed spatial index for the internet-of-things
El Alami et al. Supply of a key value database redis in-memory by data from a relational database
Xia et al. IPFP: an improved parallel FP-growth algorithm for frequent itemsets mining
Wang et al. Efficient query processing framework for big data warehouse: an almost join-free approach
Vijaykumar et al. Future robotics database management system along with cloud tps
Liu et al. Using provenance to efficiently improve metadata searching performance in storage systems
Ma et al. Introducing extreme data storage middleware of schema-free document stores using mapreduce
Pang et al. AQUA+: Query Optimization for Hybrid Database-MapReduce System
CN111984756A (zh) 一种实现Hbase二级索引的方法
US11243956B1 (en) Enforcing foreign key constraints for efficient materialized view updates
Xie et al. Silverback: Scalable association mining for temporal data in columnar probabilistic databases
Sun et al. Handling multi-dimensional complex queries in key-value data stores
Wu et al. Hm: A column-oriented mapreduce system on hybrid storage
Qi et al. The consistency analysis of secondary index on distributed ordered tables
Mitra et al. Efficient FP growth using hadoop–(improved parallel FP-Growth)
Fong et al. Toward a scale-out data-management middleware for low-latency enterprise computing
Yu et al. MPDBS: A multi-level parallel database system based on B-Tree
Singh NoSQL: A new horizon in big data
US11567972B1 (en) Tree-based format for data storage
Liu et al. Big Data Management Performance Evaluation in Hadoop Ecosystem

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20201124

WD01 Invention patent application deemed withdrawn after publication