HBase是使用Hadoop 的数据库分布式文件系统进行存储。HBase是HDFS的重要组成部分,在Hadoop集群之上运行。HBase不是传统的关系数据库,它需要不同的数据建模方法。Cassandra使用数据复制模型,因此在任何节点不可用的情况下,都不会丢失数据。Cassandra是一个分布式数据库,意味着客户端可以从任何群集和任何节点访问数据

Cassandra
它由Facebook发起,因为它始终满足应用程序需求。Cassandra于2005年启动,并于2008年向公众提供。Cassandra是为诸如Facebook和Twitter之类的社交网络等永远在线的应用程序而开发的。
Cassandra在“始终在线”架构上工作,并具有Active-Active节点模型,因此没有SPoF(单点故障)。CQL(Cassandra查询语言)是Cassandra的查询语言,但语法与SQL相同。它支持所有主要的操作系统,例如Linux,Unix,OSX和Windows。
永远在线:
Cassandra是具有分布模型的数据库,集群中的所有节点都相同。数据被复制到可配置的节点上,因此如果出现一些故障。节点数不会导致数据丢失。

HBase
HBase是一个 基于NoSQL的数据库,旨在处理大型表中的查询,该大型表具有数十亿行,数百万列,并且跨一系列商品/常规硬件运行。它以“键/值存储”的速度为您提供实时查询功能。

HBase实际上基于/工作于四维数据模型。
行ID /行键
列族。
键值对。
实际上,行键针对列族数据保留唯一值。通过使用行键,可以提取整个细节,这就是为什么面向列的数据库比传统数据库要快得多的原因。
HBase可用于随机读写访问,并提供故障支持。它还支持复制和在分发数据库模型上的工作。

HBase和Cassandra之间的主要区别
以下是要点列表,描述了HBase和Cassandra之间的主要区别:

1)对于内部节点通信,Cassandra使用GOSSIP协议,而HBase基于Zookeeper。GOSSIP协议的服务与Cassandra集成在一起,另一端Zookeeper是一个完全独立的分发应用程序。

2)在Cassandra架构中,所有节点都充当Active Node,而HBase Architect遵循Master-Slave Node模型。在双活节点模型中,没有SPoF(单故障点)。在HBase中,如果主节点发生故障,则整个群集将无法访问。

3)HBase支持二叉树搜索模型,而Cassandra不支持B树模型如果没有B树,则无法为四月份有周年纪念的每个人搜索用户的列族,而可以为住在北京的每个人搜索四月份的周年纪念日。

4)HBase,支持C,C ++,Java,Python,Scala脚本语言,而Cassandra还支持JavaScript和Ruby。

5)HBase具有一种称为协处理器的功能,而Cassandra到目前为止还没有这种功能。协处理器提供了一个库和运行时环境,用于在HBase区域服务器和主进程中执行用户代码。

6)HBase旨在支持数据仓库,而Cassandra将非常适合所有长时间运行的应用程序,例如Web和移动应用程序。

7)HBase查询语言是一种自定义语言,当Cassandra使用其自己开发的CQL(Cassandra查询语言)时,需要学习该自定义语言,这是类似于SQL的语言

8)管理Cassandra比HBase容易得多。在Cassandra中,每个节点需要运行一个Java进程,而对于HBase,则需要完全运行的HDFS,多个HBase进程和Zookeeper系统。

9)HBase确实实现了端到端校验和和自动重新平衡,而Cassandra不支持整个群集的重新平衡。

10)基于“ CAP定理”,Cassandra使用AP模型,而HBase是CP模型。

CAP定理

该定理用于分布式系统。C表示一致性,A表示可用性,P表示分区容限。CAP定理说明如下:

C(一致性):一致性表示如果有人将值写入数据库,则其他人可以立即读取相同的值。

A(可用性):可用性是指如果群集中的某些节点不可用(由于某些问题而导致节点关闭/不处于群集中的节点)将不会影响整个群集,并且分布式系统/数据库将可用于访问数据。该群集将可用于所有类型的任务。

P(分区容限):分区容限是指一个数据中心是否仍然宕机,不应该影响节点上的数据,并且所有数据都可以随时访问。意味着,分区容限允许在群集环境中更好地将数据复制到其他数据中心。

表格对比:
CAP定理 HBase一致性和可用性 可用性和分区容限
协处理器 HBase是 没有
再平衡 HBase在群集内提供自动重新平衡。 Cassandra还提供了重新平衡,但不适用于整个集群
建筑模型 HBase它基于主从结构模型 Cassandra基于主动-主动节点模态
数据库基础 HBase它基于Google BigTable Cassandra基于Amazon DynamoDB
SPoF(单点故障) HBase如果主节点不可用,则整个群集将无法访问 Cassandra集群内的所有节点都具有相同的角色,因此没有SPoF
DR(灾难恢复) HBase如果配置了两个主节点,则可以进行DR。 Cassandra是的,因为所有节点都具有相同的角色
HDFS兼容性 HBase是的,因为HBase将所有元数据存储在HDFS中 Cassandra没有
一致性 HBase强大 Cassandra不如HBase强

结论
Facebook和另一社交网络方面将更喜欢HBase(之前两者都使用Cassandra,请参阅Facebook 帖子),因为它具有可用性,另一边的银行领域部门正在为其每笔金融交易寻找安全性,因此他们会选择Cassandra而不是HBase。

Cassandra的关键特性包括高可用性,最少的管理和无SPoF(单故障点)的另一面,HBase有利于以线性可伸缩性更快地读取和写入数据。

诸如Verizon,Bloomberg,美国银行等公司正在使用HBase,而主要的社交网站(例如Twitter,Facebook等)正在使用Cassandra。

我们无法断定哪一个是最好的,HBase与Cassandra都有各自的优势和劣势。在生产环境中可以看到HBase与Cassandra数据库的实际性能。