首先看两者的简单介绍:
ElasticSearch:是一个基于Lucene的搜索引擎;
HBase:是一个开源的,非关系的,分布式的数据模型存储引擎;
两个框架都可以做分布式的存储和搜索,但是在海量日志数据面前,具体应该选择哪个框架呢?
以下几点可以考虑:
- 查询复杂度:HBase支持比较简单的行或者区间查询,如果更复杂的查询功能就不太容易支持。ES支持的查询比较丰富。
- 数据量:两者都是支持海量数据的。由于HBase天生的大数据身份,本能的支撑更大量级的数据;ES最开始只是一个基于Lucene的搜索引擎,后期加入了存储的扩展,也就是说ES在存储扩展上可能会非一些力气。
- 维护成本:一旦项目上线,维护成本也是一个必须考虑的问题,HBase基于的是Hadoop那一套,组建多,代价高;ES独立扩展维护较简单一些。
简单一句话:考虑存储的场景使用HBase;考虑查询的场景使用ES;当然两者结合更完美。