HBASE+Solr實(shí)現(xiàn)詳單查詢
背景
某電信項(xiàng)目中采用HBase來存儲用戶終端明細(xì)數(shù)據(jù),供前臺頁面即時查詢。HBase無可置疑擁有其優(yōu)勢,但其本身只對rowkey支持毫秒級的快速檢索,對于多字段的組合查詢卻無能為力。針對HBase的多條件查詢也有多種方案,但是這些方案要么太復(fù)雜,要么效率太低,本文只對基于Solr的HBase多條件查詢方案進(jìn)行測試和驗(yàn)證。
原理
基于Solr的HBase多條件查詢原理很簡單,將HBase表中涉及條件過濾的字段和rowkey在Solr中建立索引,通過Solr的多條件查詢快速獲得符合過濾條件的rowkey值,拿到這些rowkey之后在HBASE中通過指定rowkey進(jìn)行查詢。
HBase與Solr系統(tǒng)架構(gòu)設(shè)計(jì)
使用HBase搭建結(jié)構(gòu)數(shù)據(jù)存儲云,用來存儲海量數(shù)據(jù);使用SolrCloud集群用來搭建搜索引擎,將要查找的結(jié)構(gòu)化數(shù)據(jù)的ID查找出來,只配置它存儲ID。
wd代表用戶write data寫數(shù)據(jù),從用戶提交寫數(shù)據(jù)請求wd1開始,經(jīng)歷wd2,寫入MySQL數(shù)據(jù)庫,或?qū)懭虢Y(jié)構(gòu)數(shù)據(jù)存儲云中,wd3,提交到Solr集群中,從而依據(jù)業(yè)務(wù)需求創(chuàng)建索引。
rd代表用戶read data讀數(shù)據(jù),從用戶提交讀數(shù)據(jù)請求rd1開始,經(jīng)歷rd2,直接讀取MySQL中數(shù)據(jù),或向Solr集群請求搜索服務(wù),rd3,向Solr集群請求得到的搜索結(jié)果為ID,再向結(jié)構(gòu)數(shù)據(jù)存儲云中通過ID取出數(shù)據(jù),***返回給用戶結(jié)果。
實(shí)現(xiàn)方法有兩種
- 手工編碼,直接用HBASE的API,可以參考下文:http://www.cnblogs.com/chenz/articles/3229997.html
- 可以使用HBASE/Solr的LUNA接口,就不用自己管理兩者。
【本文為51CTO專欄作者“大數(shù)據(jù)和云計(jì)算”的原創(chuàng)稿件,轉(zhuǎn)載請通過微信公眾號獲取聯(lián)系和授權(quán)】