大数据培训_基于solr的Hbase秒级查询方案
简单介绍简单的说,以下是课堂小结
Hbase提供大数据的存储
Solr 提供全文搜索功能,提高高效的索引查询
Hbase+solr(提供高效的全文搜索的大数据存储解决方案)
项目背景某移动项目中采用Hbase来存储用户终端明细数据,供前台页面即时查询。Hbase无可置疑拥有其优势,但其本身只对rowkey支持毫秒级的快速检索,对于多字段的组合查询却无能为力。针对Hbase的多条件查询也有多种方案,但是这些方案要么太复杂,要么效率太低,本文只对基于Solr的Hbase多条件查询方案进行测试和验证。
原理基于Solr的Hbase多条件查询原理很简单,将Hbase表中涉及条件过滤的字段和rowkey在Solr中建立索引,通过Solr的多条件查询快速获得符合过滤条件的rowkey值,拿到这些rowkey之后在Hbase中通过指定rowkey进行查询。
Solr介绍Solr是apache旗下基于lucene的一个完整的搜索服务。Solr主要包括两部分核心组件:索引组件和搜索组件。索引组件用于将需要索引的数据在搜索程序中建立索引,而搜索组件用于响应客户端的请求来查询索引。Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。文档通过Http利用XML加到一个搜索集合中。查询该集合也是通过http收到一个XML/JSON响应来实现。它的主要特性包括:高效、灵活的缓存功能,垂直搜索功能,高亮显示搜索结果,通过索引复制来提高可用性,提供一套强大Data Schema来定义字段,类型和设置文本分析,提供基于Web的管理界面等。
Hbase介绍Hbase是Hadoop家族针对海量数据的分布式存储方案,当我们通过rowkey对存于Hbase中的海量数据进行查询时可以达到秒级的响应,实现比较理想的用户体验。但是,当在比较复杂的场景下,如需要对数据做多条件查询时,Hbase提供的解决方案都不是很理想。
针对多条件查询,Hbase本身现阶段有两种比较主流的解决方案:
1、通过协处理器在插入数据时手动建索引表
Hbase中的协处理器有两种:Observer和Endpoint。Observer类似于关系型数据库中的触发器,Endpoint类似于关系型数据库中的存储过程。
我们在利用协处理器建索引表时使用的是Observer,即在往Hbase表中插入数据时,加入Observer操作,让每插入一条数据前都调用我们自定义的业务逻辑在索引表中生成需要索引字段的记录。
这样在我们针对Hbase进行多条件查询时,我们的查询操作分成两步:第一步首先根据查询条件在索引表进行查询,查询对应结果的rowkey,第二步再根据rowkey去主表查询我们需要的数据。
总结结合Solr索引可以很好的实现Hbase的多条件查询,同时还能解决其两个难点:分页查询、数据总量统计。实际场景中大多都是分页查询,分页查询返回的数据量很少,采用此种方案完全可以达到前端页面毫秒级的实时响应;若有大批量的数据交互,比如涉及到数据导出,实际上效率也是很高,十万数据仅耗时10秒
985大学 211大学 全国院校对比 专升本