企業級技術解決方案:hbase+es


1:需求:

解決海量數據的存儲,並且能夠實現海量數據的秒級查詢

 

Hbase是典型的nosql,是一種構建在HDFS之上的分布式、面向列的存儲系統,在需要的時候可以進行實時的大規模數據集的讀寫操作;但是hbase的語法非常固話,即便在hbase之上嫁接了phoneix在應對復雜查詢的時候,仍然力不從心;

所以說很多公司在歷史遺留問題,最開始數據存儲在hbase上,當業務越來越復雜,數據量越來越大的時候,使用hbase構建復雜的查詢就很吃力了,甚至很多指標無法完成;

這個時候,我們就是用elasticsearch架構在hbase之上;

海量的數據存儲使用hbase,數據的即席查詢(快速檢索)使用elasticsearch

通過elasticsearch+hbase就可以做到海量數據的復雜查詢;

在操作之前,我們還要考慮:一批數據在elasticsearch中構建索引的時候,針對每一個字段要分析是否存儲和是否構建索引

 

實際生產中,一遍文章要分成標題和正文;但是正文的量是比較大的,那么我們一般會在,在hbase中存儲正文(hbase本身就是做海量數據的存儲);這樣通過es的倒排索引列表檢索到關鍵詞的文檔id,然后根據文檔id在hbase中查詢出具體的正文

(當然具體情況看具體需求)

分析,數據哪些字段需要構建索引:

文章數據(id、title、author、describe、conent)

字段名稱 是否需要索引 是否需要存儲
Id 默認索引 默認存儲
Title 需要 需要
Author 看需求 看需求
Dscribe 需要 存儲
Content 看需求(高精度查詢,是需要的 ) 看需求
Time 需要 需要

2:mapping的配置信息


curl -XPUT http://hadoop01:9200/articles -d '
{  
   "settings":{  
        "number_of_shards":3,  
        "number_of_replicas":1  
  },  
   "mappings":{  
        "article":{  
            "dynamic":"strict",  
            "properties":{  
                "id":{"type": "string", "store": true},  
                "title":{"type": "string","store": true,"index" : "analyzed","analyzer": "ik_max_word"},
                "from":{"type": "string","store": true},
                "readCounts":{"type": "integer","store": true},  
                "content":{"type": "string","store": false,"index": "no"},
                "times": {"type": "string", "index": "not_analyzed"}
            }  
        }  
  }  
} '

3: 架構設計

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM