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