solr-phoenix

1 , phoenix配置文檔+demo-crud程序
2 , solr索引原理(一次性建立還是每次都建立,對值)
將HBase表中涉及條件過濾的字段和rowkey在Solr中建立索引,通過Solr的多條件查詢快速獲得符合過濾條件的rowkey值,拿到這些rowkey之後在HBASE中通過指定rowkey進行查詢

phoenix VS solr
第一種方案是通過HBase的普通API獲取數據建立索引:
phoenix是HBASE的sql層,本質還是調用HBASE API,數據存放在HBASE
solr是一種獨立的服務,存在自己的服務器,建立索引的數據存放在solr服務器,用戶訪問時,根據solr提供的接口訪問到

優點:HBase與Solr彼此沒有任何耦合,通過外部java程序來控制索引的創建修改,整個系統的高可用性和容錯性有保證。

缺點:效率較低。每秒處理125條數據(加大線程可以提高效率)


第二種方案是用到HBase的Mapreduce框架

優點:分佈式並行執行效率特別高,處理1000萬條數據僅需5分鐘

缺點:但是這種高併發需要對Solr服務器進行配置調優,不然會拋出服務器無法響應的異常。適合批量處理,數據量較小時不適合。


第三種方案是在往HBase寫數據的過程中,觸發HBase的coprocessor的observer功能調用solr服務,建立solr索引。是在Base的中實現。

優點:外部調用端不需要考慮solr索引的建立問題,只需要調用HBase操作數據,索引的建立交給HBase調用Solr實現。

缺點:協處理器運行在和RegionServer相同的進程空間裏,出錯的協處理器有潛在可能使進程崩潰,導致HBase的數據出錯。


綜上所述,考慮到HBase集羣的高可用性、容錯性、擴展性等,建議主要使用第一種方案建立索引,第二種方案爲輔助
ElasticSearch

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章