【Elasticsearch】優秀實踐-ES+Hbase的實現

前言

因爲之前在項目上,需要用到ES+Hbase方案,最後經過各種測試和驗證,最終項目完成上線。因爲在實際的過程遇到不少的問題,和理論還是有一定的差距。

紙上得來終覺淺,絕知此事要躬行。----古人誠不欺我

基本原理

很簡單,將Elasticsearch的DOC ID和Hbase的rowkey相關聯:
在這裏插入圖片描述
將源數據根據業務特點劃分爲索引數據和原始數據:

索引數據:指需要被檢索的字段,存儲在Elasticsearch集羣中;

原始數據:指不需要被ES檢索的字段,包括某些超長的文本數據等,存儲在Hbase集羣中。

將HBase的rowkey設定爲ES的文檔ID,搜索時根據業務條件先從ES裏面全文檢索出相對應的文檔,從而獲取出文檔ID,即拿到了rowkey,再從HBase裏面抽取數據。

優點

  1. 發揮了Elasticsearch的全文檢索的優勢,能夠快速根據關鍵字檢索出相關度最高的結果;
  2. 同時減少了Elasticsearch的存儲壓力,這種場景下不需要存儲檢索無關的內容,甚至可以禁用_source,節約一半的存儲空間,同時提升最少30%的寫入速度;
  3. 避免了Elasticsearch大數據量下查詢返回慢的問題,大數據量下Hbase的抽取速度明顯優於Elasticsearch;
  4. 各取所長,發揮兩個組件各自的優勢。

缺點

說完了優點,其實也有不少坑,一把辛酸淚…

1、兩個組件之間存在時效不一致的問題

相對而言,Elasticsearch的入庫速度肯定是要快於Hbase的,這是需要業務容忍一定的時效性,對業務的要求會比較高。

2、同時管理兩個組件增加了管理成本

顯而易見,同時維護兩套組件的成本肯定是更大的。

小結

總的來說,如果要使用ES+HBase,要充分考慮業務數據是否適合這種模式。

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