基于HBase大数据的实时全文检索系统及其实现方法与流程

文档序号:13427066阅读:613来源:国知局

本发明涉及计算机处理技术领域,尤其涉及一种基于hbase大数据的实时全文检索系统及其实现方法。



背景技术:

hbase作为一种nosql数据库被越来越多的运用于线上生产环境中存储海量数据。hbase是一种键值(key-value)存储、面向列族的数据库,它能根据需要查询的键值key快速的定位到相应的行。但是很多场景中,用户往往只知道所需查询的value值,而不知道value所对应的key。甚至用户只知道value值中的某一部分,想像搜索引擎一样,能全文检索只包含部分值的所有行数,这个时候hbase往往对这种需求只能去扫描整张表,取出所有行的值,然后看看这个值是否有用户所需要查询的内容,这种办法效率低下,而且随着hbase存储数量越来越大的情况下,延时非常严重,根本不能满足用户的需求。

鉴于此,如何基于hbase作为数据存储实现高效率、低延时的实时全文检索成为目前需要解决的技术问题。



技术实现要素:

为解决上述的技术问题,本发明提供一种基于hbase大数据的实时全文检索系统及其实现方法,能够基于hbase作为数据存储实现高效率、低延时的实时全文检索。

第一方面,本发明提供一种基于hbase大数据的实时全文检索系统,包括:hbase集群复制模块,索引服务器模块和搜索引擎模块;

所述hbase集群复制模块,用于与hbase集群同时启动,并实时监测是否有从集群slavecluster的区域服务器regionserver注册进来,若有,则在hbase集群有数据变动时将所述数据变动实时同步到已注册进来的slavecluster的regionserver;

所述索引服务器模块,用于实现regionserver的接口以模拟一个slavecluster的regionserver,包括:调用hbase的replicationadmin接口往所述hbase集群复制模块注册,告知hbase集群它是slavecluster的regionserver,要接受hbase集群传输过来的数据;并在接受hbase集群的数据后,对所述数据按照搜索引擎的格式进行转换,并将转换后的数据传输给所述搜索引擎模块;

所述搜索引擎模块,用于根据所述转换后的数据建立全文索引,以实现用户对hbase数据的实时全文检索。

优选地,所述数据变动,包括:在hbase集群的表上删除数据、插入数据、和/或更新数据。

优选地,所述索引服务器模块为一个远程过程调用rpc服务器。

第二方面,本发明提供一种基于上述基于hbase大数据的实时全文检索系统的实现方法,包括:

创建索引服务器模块,所述索引服务器模块调用hbase的replicationadmin接口往所述hbase集群复制模块注册,告知hbase集群它是slavecluster的regionserver,要接受hbase集群传输过来的数据;

在hbase集群启动的同时,hbase集群复制模块启动并实时监测是否有slavecluster的regionserver注册进来,若有,则在hbase集群有数据变动时将所述数据变动实时同步到已注册进来的slavecluster的regionserver;

所述索引服务器模块在接收到hbase集群传输的数据后,对所述数据按照搜索引擎的格式进行转换,并将转换后的数据传输给所述搜索引擎模块;

所述搜索引擎模块根据所述转换后的数据建立全文索引,以实现用户对hbase数据的实时全文检索。

优选地,在启动hbase集群之前,还包括:

修改hbase配置文件,以实现在hbase集群启动的同时启动hbase集群复制模块。

优选地,所述数据变动,包括:在hbase集群的表上删除数据、插入数据、和/或更新数据。

优选地,所述索引服务器模块为一个远程过程调用rpc服务器,在所述hbase集群复制模块监测到所述索引服务器模块模拟一个slavecluster的regionserver注册进来且hbase集群有数据变动时,所述hbase集群复制模块通过调用rpc方法replicatelogentries将所述数据变动实时同步到所述索引服务器模块。

优选地,所述hbase集群复制模块实时监测是否有从集群slavecluster的区域服务器regionserver注册进来,若有,则在hbase集群有数据变动时将所述数据变动实时同步到已注册进来的slavecluster的regionserver,包括:

在用户通过hbase集群的客户端的api接口对hbase集群存储的数据进行数据变动时,hbase集群将所述数据变动的操作记录在hlog日志文件内,所述hbase集群复制模块实时监控所述hlog日志文件内容的变化,在所述hbase集群复制模块监测到所述索引服务器模块模拟一个slavecluster的regionserver注册进来且所述hlog日志文件内容有数据变动的操作时,将所述数据变动实时同步到所述索引服务器模块。

由上述技术方案可知,本发明的基于hbase大数据的实时全文检索系统及其实现方法,能够基于hbase作为数据存储实现高效率、低延时的实时全文检索。

附图说明

为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些图获得其他的附图。

图1是本公开一实施例提供的一种基于hbase大数据的实时全文检索系统的结构示意图;

图2是本公开一实施例提供的图1所示的基于hbase大数据的实时全文检索系统的实现方法的流程示意图

图3是本公开一实施例提供的图1所示的基于hbase大数据的实时全文检索系统的一种更具体的实现方法的流程示意图。

具体实施方式

下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。

图1是本公开一实施例提供的一种基于hbase大数据的实时全文检索系统,如图1所示,本实施例的基于hbase大数据的实时全文检索系统,包括:hbase集群复制模块(hbasereplication),索引服务器模块(hbaseindexerserver)和搜索引擎模块(searchengine);其中:

所述hbase集群复制模块,用于与hbase集群同时启动,并实时监测是否有从集群slavecluster的区域服务器regionserver注册进来,若有,则在hbase集群有数据变动时将所述数据变动实时同步到已注册进来的slavecluster的regionserver;

所述索引服务器模块,用于实现regionserver的接口以模拟一个slavecluster的regionserver,包括:调用hbase的replicationadmin接口往所述hbase集群复制模块注册,告知hbase集群它是slavecluster的regionserver,要接受hbase集群传输过来的数据;并在接受hbase集群的数据后,对所述数据按照搜索引擎的格式进行转换,并将转换后的数据传输给所述搜索引擎模块;

所述搜索引擎模块,用于根据所述转换后的数据建立全文索引,以实现用户对hbase数据的实时全文检索。

在具体应用中,所述数据变动,可以包括:在hbase集群的表上删除数据、插入数据、和/或更新数据等操作。

在具体应用中,所述索引服务器模块为一个远程过程调用(remoteprocedurecall,简称rpc)服务器。

本实施例的基于hbase大数据的实时全文检索系统,可应用于所有想基于hbase大数据存储上实现全文检索的场景,通过索引服务器模块(hbaseindexerserver)作为hbase集群和搜索引擎模块之前的桥梁,索引服务器模块利用hbase主从集群复制机制模拟伪装成了hbase的一个从集群的区域服务器regionserver,往hbase集群复制模块注册,使hbase集群复制模块认定索引服务器模块是一个从集群的regionserver,需要接受hbase集群上面的数据变动,索引服务器模块接收到数据后,将其转换成搜索引擎需要的格式,从而使搜索引擎模块根据转换后的数据建立全文索引,能使用户实时地在搜索引擎模块中搜索结果。它保证了hbase集群和搜索引擎模块之前的数据同步,能够基于hbase作为数据存储实现高效率、低延时的实时全文检索。用户在操作hbase时,根本不知道后台已经基于hbase数据实时建立全文索引。本系统各个模块职责分离,利用hbase集群复制机制实现了数据的同步和实时全文检索功能的实现,能够在不影响hbase集群本身的性能和对用户透明情况下,对hbase数据实时搜索系统的实现。

图2是本公开一实施例提供的图1所示基于hbase大数据的实时全文检索系统的实现方法的流程示意图,如图2所示,包括步骤101-104:

101、创建索引服务器模块,所述索引服务器模块调用hbase的replicationadmin接口往所述hbase集群复制模块注册,告知hbase集群它是slavecluster的regionserver,要接受hbase集群传输过来的数据。

102、在hbase集群启动的同时,hbase集群复制模块启动并实时监测是否有slavecluster的regionserver注册进来,若有,则在hbase集群有数据变动时将所述数据变动实时同步到已注册进来的slavecluster的regionserver。

其中,所述数据变动,可以包括:在hbase集群的表上删除数据、插入数据、和/或更新数据等操作。

在具体应用中,在步骤102启动hbase集群之前,还包括:

修改hbase配置文件,以实现在hbase集群启动的同时启动hbase集群复制模块。

在具体应用中,所述索引服务器模块为一个远程过程调用rpc服务器,在所述hbase集群复制模块监测到所述索引服务器模块模拟一个slavecluster的regionserver注册进来且hbase集群有数据变动时,所述hbase集群复制模块通过调用rpc方法replicatelogentries将所述数据变动实时同步到所述索引服务器模块。

具体地,在步骤102中,在用户通过hbase集群的客户端的应用程序编程接口(applicationprogramminginterface,简称api)对hbase集群存储的数据进行数据变动时,hbase集群将所述数据变动的操作记录在hlog日志文件内,所述hbase集群复制模块实时监控所述hlog日志文件内容的变化,在所述hbase集群复制模块监测到所述索引服务器模块模拟一个slavecluster的regionserver注册进来且所述hlog日志文件内容有数据变动的操作时,将所述数据变动实时同步到所述索引服务器模块。

103、所述索引服务器模块在接收到hbase集群传输的数据后,对所述数据按照搜索引擎的格式进行转换,并将转换后的数据传输给所述搜索引擎模块。

104、所述搜索引擎模块根据所述转换后的数据建立全文索引,以实现用户对hbase数据的实时全文检索。

利用本实施例的所述方法可实现基于hbase大数据的实时全文检索系统,能够在不影响hbase集群本身的性能和对用户透明情况下,基于hbase作为数据存储实现高效率、低延时的实时全文检索。

进一步地,图1所示基于hbase大数据的实时全文检索系统的数据流如下所述:

1、用户通过hbase提供的客户端api接口对hbase集群储存的数据进行插入、更新或者删除的更新操作时会产生数据的变动,这时候需要实时同步更新搜索引擎里面的数据。2、hbase集群会首先把这些操作记录在hlog日志文件内。3、hbase集群复制模块(relication)会监事hlog文件内容变化,当有数据更新操作发生时,它会抓取到这些变化的数据,然后如果有从集群的区域服务器(regionserver)已经注册到relication上面时,这些变动数据会被replication传输给注册的regionserver。因为索引服务器模块(hbaseindexer)已经实现了regionserver接口,并且注册到relication上面了。所以hbaseindexer被当做regionserver能接受到这些变化数据。4、hbaseindexer根据接受到的数据,会对搜索引擎模块发起请求,根据数据的类型,比如说更新、插入或者删除进行相应的索引变动,从而保证数据的实时同步。5、用户通过搜索引擎模块能实时的全文搜索在hbase上储存的数据。

图3为本公开实施例提供的图1所示的基于hbase大数据的实时全文检索系统的一种更具体的实现方法的流程示意图,如图3所示,整个系统方案的具体实施步骤可包括:

第一步:启动hbaserelication功能。修改hbase配置文件hbase-site.xml内配置项hbase.relication为true.然后启动hbase集群。

第二步:创建hbaseindexerserver.hbaseindexer需要时间regionserver的接口hregioninterface,然后启动rpc服务。hregioninterface接口中有个方法replicatelogentries是需要hbaseindexer重点实现,因为replication就是调用这个rpc方法来传输数据给hbaseindexer。

第三步:启动hbaseindexer服务,并且在启动服务器后调用hbase的relicateamin的方法addpeer把地址注册到relication上去。hbasereplication接收到注册请求后会把这个它认为的regionserver服务器放入到自己队列中去。当有数据变动时,它会从队列中选择regionserver服务器,然后调用远程过程方法replicatelogentries把数据传输过去。

第四步:等待hbase上数据变动。当有hbase客户端数据发生变动时,hbase会把这些改动记录到hbase内部的日志文件hlog内。然后进入第五步。不然一直在等待。

第五步:从hlog中抓取这些变动数据。relication会一直记录hlog文件的偏移值,当发现这个偏移值发生改动时,就知道有操作发生了,它会从当前的偏移值读取数据到最后,然后把读取的数据放进一个列表中。然后查看是否有regionserver已经注册自己上面,如果有的话,就把数据的列表通过远程过程调用传输过去。

第六步:hbaseindexer在等待relication传输数据。当接收到传输过来的数据时,hbaseindexer首先需要解析这些数据,因为里面有删除、插入、更新等不同的数据操作。它会根据操作的不同类型,先转化了搜索引擎统接口的统一格式,然后调用相应的api接口,进行索引的改动,从而实现数据的实时同步和全文索引的创建。

利用本实施例的所述方法可实现基于hbase大数据的实时全文检索系统,能够在不影响hbase集群本身的性能和对用户透明情况下,基于hbase作为数据存储实现高效率、低延时的实时全文检索。

应当注意的是,在本公开的系统的各个部件中,根据其要实现的功能而对其中的部件进行了逻辑划分,但是,本公开不受限于此,可以根据需要对各个部件进行重新划分或者组合,例如,可以将一些部件组合为单个部件,或者可以将一些部件进一步分解为更多的子部件。

本公开的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器来实现根据本公开实施例的系统中的一些或者全部部件的一些或者全部功能。本公开还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本公开的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

应该注意的是上述实施例对本公开进行说明而不是对本公开进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包括”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本公开可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

以上实施方式仅适于说明本公开,而并非对本公开的限制,有关技术领域的普通技术人员,在不脱离本公开的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本公开的范畴,本公开的专利保护范围应由权利要求限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1