[原]自学大数据:基于Solr实现HBase的文本索引

标签: | 发表时间:2014-10-09 21:47 | 作者:shifenglov
出处:http://blog.csdn.net/shifenglov

前言

最近接触的项目中,需要针对HBase的数据进行索引查询,主要支持中文查询,分页查询等。在此情况下,学习了搜索服务器solr。总结了一些方法和经验,正好可以分享个大家,鼓励自己,共同学习。


使用目的

HBase目前只支持对rowkey的一级索引,对于二级索引还不支持,当然可以把所有要索引的字段都拼接到rowkey中,根据hbase的filter功能进行查询,但是这样操作数据会涉及到全表扫描,效率很低,速度慢,不利于后期扩展。并且,通过HBase自己的索引,实现数据量统计,分页,中文索引几乎不可能。所以,基于solr为HBase创建索引,就显得更有价值。

 

名词解析

Solr: Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。Solr是一个独立的企业级搜索应用服务器,它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。

 

原理

基于Solr的HBase多条件查询原理很简单,将HBase表中涉及条件过滤的字段和rowkey在Solr中建立索引,通过Solr的多条件查询快速获得符合过滤条件的rowkey值,拿到这些rowkey之后在HBASE中通过指定rowkey进行查询。


环境搭建

 基于tomcat服务器搭建solr的运行环境,参照slor官网  Solr with Apache Tomcat 

 

建立索引实现方式

 目前主流的通过solr在HBase之上建立索引, 有三种方式

1、  第一种方案是通过HBase的普通API获取数据建立索引


优点:HBase与Solr彼此没有任何耦合,通过外部java程序来控制索引的创建修改,整个系统的高可用性和容错性有保证。

缺点:效率较低。每秒处理125条数据(加大线程可以提高效率)

基于本人PC测试:

线程数设置为10个,每秒可以处理294条数据

线程数设置为20个,每秒可以处理410条数据

线程数设置为25个,每秒可以处理376条数据

线程数设置为30个,每秒可以处理382条数据

 

2、  第二种方案是用到HBase的Mapreduce框架


优点:分布式并行执行效率特别高,处理1000万条数据仅需5分钟

缺点:但是这种高并发需要对Solr服务器进行配置调优,不然会抛出服务器无法响应的异常。适合批量处理,数据量较小时不适合。

 

3、  第三种方案是在往HBase写数据的过程中,触发HBase的coprocessor的observer功能调用solr服务,建立solr索引。是在Base的中实现。


优点:外部调用端不需要考虑solr索引的建立问题,只需要调用HBase操作数据,索引的建立交给HBase调用Solr实现。

缺点:协处理器运行在和RegionServer相同的进程空间里,出错的协处理器有潜在可能使进程崩溃,导致HBase的数据出错。

 

综上所述,考虑到HBase集群的高可用性、容错性、扩展性等,建议主要使用第一种方案建立索引,第二种方案为辅助。

 

作者:shifenglov 发表于2014/10/9 13:47:32 原文链接
阅读:1280 评论:0 查看评论

相关 [自学 大数据 solr] 推荐:

[原]自学大数据:基于Solr实现HBase的文本索引

- -
最近接触的项目中,需要针对HBase的数据进行索引查询,主要支持中文查询,分页查询等. 在此情况下,学习了搜索服务器solr. 总结了一些方法和经验,正好可以分享个大家,鼓励自己,共同学习. HBase目前只支持对rowkey的一级索引,对于二级索引还不支持,当然可以把所有要索引的字段都拼接到rowkey中,根据hbase的filter功能进行查询,但是这样操作数据会涉及到全表扫描,效率很低,速度慢,不利于后期扩展.

Solr SpellCheck 应用

- - 开源软件 - ITeye博客
通过对各类型的SpellCheck组件学习,完成项目拼写检查功能. 本文使用基于拼写词典的实现方式,solr版本为5.3.0. SpellCheck 简述. 拼写检查是对用户错误输入,响应正确的检查建议. 比如输入:周杰轮,响应:你是不是想找 周杰伦. Solr的拼写检查大致可分为两类,基于词典与基于Solr索引.

Solr DocValues详解

- - 企业架构 - ITeye博客
什么是docValues. docValues是一种记录doc字段值的一种形式,在例如在结果排序和统计Facet查询时,需要通过docid取字段值的场景下是非常高效的. 为什么要使用docValues. 这种形式比老版本中利用fieldCache来实现正排查找更加高效,更加节省内存. 倒排索引将字段内存切分成一个term列表,每个term都对应着一个docid列表,这样一种结构使得查询能够非常快速,因为term对应的docid是现成就有的.

solr的使用

- - Web前端 - ITeye博客
solr的原理不和大家一一讲述,主要讲solr在使用过程中的注意事项.  首先是安装solr,安装步骤省略. (不要说我懒,安装步骤导出都是. 成功之后 需要在solr里面建立一个针对你的业务的服务,我想建立一个叫做discuz的服务. 然后你在你的solr目录 :solr-5.5.3/server/solr/  下看见了discuz   ,这是你刚刚创建的,针对某一业务的整个搜索配置都是在这个目录下配置的.

Solr调优参考

- - 淘宝网通用产品团队博客
共整理三部分,第一部分Solr常规处理,第二部分针对性性处理,前者比较通用,后者有局限性. 务必根据具体应用特性,具体调节参数,对比性能. 具体应用需要全面去把控,各个因素一起起作用. 第一部分. E文连接 http://wiki.apache.org/solr/SolrPerformanceFactors.

Solr之缓存篇

- - 淘宝网综合业务平台团队博客
Solr在Lucene之上开发了很多Cache功能,从目前提供的Cache类型有:. 而每种Cache针对具体的查询请求进行对应的Cache. 本文将从几个方面来阐述上述几种Cache在Solr的运用,具体如下:. (1)Cache的生命周期. (2)Cache的使用场景. (3)Cache的配置介绍.

Solr主从备份

- - 研发管理 - ITeye博客
SOLR复制模式,是一种在分布式环境下用于同步主从服务器的一种实现方式,因之前提到的基于rsync的SOLR不同方式部署成本过高,被SOLR1.4版本所替换,取而代之的就是基于HTTP协议的索引文件传输机制,该方式部署简单,只需配置一个文件即可. 以下讲解具体操作步骤: . 步骤分主服务器和从服务器,允许有多个从服务器,即从服务器的配置一样.

solr相似匹配

- - CSDN博客推荐文章
相似匹配   在我们使用网页搜索时,会注意到每一个结果都包含一个 “相似页面” 链接,单击该链接,就会发布另一个搜索请求,查找出与起初结果类似的文档. Solr 使用 MoreLikeThisComponent(MLT)和 MoreLikeThisHandler 实现了一样的功能. 如上所述,MLT 是与标准 SolrRequestHandler 集成在一起的;MoreLikeThisHandler 与 MLT 结合在一起,并添加了一些其他选项,但它要求发布一个单一的请求.

Solr与Mysql集成指南

- sun - 草根网:互联网界的读者文摘
在《企业级搜索引擎Solr使用入门指南》及《企业级搜索引擎Solr交流》中对Solr的使用做了简单介绍. 在数据库驱动的应用中,当时采....

Solr\Lucene优劣势分析

- - 淘宝网综合业务平台团队博客
最早lucene2.4以及以前,追溯到2008年前后,lucene刚刚引起大家的关注,到后来Nutch. 、solr的出现,lucene变得更加热. Nutch、Solr的发展,极大推动了lucene的升级. 对于一些接触过搜索,使用过lucene、solr的人来说,一般都会感觉lucene、solr很牛逼.