《Elasticsearch与Hbase比较》

Elasticsearch和Hbase都是非常流行的大数据存储方案,有相似也有很大不同,本文对二者做个比较全面的比较。

介绍

Elasticsearch是一个近实时的搜索引擎,对document进行索引和搜索,索引包括基本的CRUD操作,搜索基于自己的Query DSL,能执行复杂的查询,此外还有聚合功能等等。它的数据模型是:索引,类型,文档。

Hbase是运行与hadoop之上的Nosql数据库,它的数据模型:表、行、列族、Cells,它对数据模型的主要操作是Get, Put, Scan, 和 Delete。

比较

对比列表

特性 Elasticsearch Hbase 说明
扩展性 可扩展 可扩展
部署难易 简单 复杂 Hbase依赖hadoop,部署复杂。
高可用 二者架构都实现了高可用。
数据量 海量数据 海量数据
并发能力 高并发 高并发
一致性 最终一致性 强一致性 Elasticsearch有三种一致性方案。
访问方式 Java API,Restful API Java API,Restful API,Thrift Server
编程语言 多种 多种
实现语言 Java Java
SQL支持 第三方工具 第三方工具
MapReduce 不支持 支持
分区方式 sharding sharding Elasticsearch索引会分成不同的分片,Hbase的表会划分成region。
schema schema-free schema-free 二者都易增减字段,但是es的字段带类型,类型确定后,不能更改。
多索引 Elasticsearch每个字段都被索引。
写入速度 不快 非常快
查询速度 很快 get、限定rowkey的查询很快
查询功能 查询功能强 简单查询

写能力

Elasticsearch通过api提供了普通写入和bulk写入两种方式,可以通过修改配置、增加节点方式提高写入速度,可达几千,几万documents/s, 但在海量数据下,仍显太慢。同样集群,es写入速度远比Hbase慢。

Hbase写入速度快,也提供了bulkload等多种方法导入数据,提高了海量数据写入速度。

读能力

Elasticsearch中各个字段都被索引,不仅get操作快,按多个字段的查询操作也很快。

Hbase的get操作非常快, 如果不限定rowkey,scan非常慢。

总结

Elasticsearch 适合应用于流式写入,频繁多字段查询、分析的场景。不适合频繁大量写入、更新数据的场景。

Hbase 适合频繁大量数据写入、更新,频繁的key-value查询的场景。不适合多字段查询的场景。

.
.
.

改变自己,改变世界,支持我吧!