为什么HBase是比Cassandra和Hadoop更好的select?

为什么使用HBase比使用CassandraHadoop更好?

任何人都可以给这个详细的解释吗?

谢谢

我不认为任何一个都比别人好,不只是其中之一。 这些是非常不同的系统,每个系统都有自己的优缺点,所以这取决于你的使用情况。 它们绝对可以在相同的基础设施中互相配合使用。

为了更好地解释这个差别,我想借用一张来自卡桑德拉的图片:权威指南 ,他们通过CAP定理。 他们所说的基本上是任何分布式系统,你必须在一致性可用性分区容限之间find一个平衡点,并且你只能真实地满足其中的两个属性。 从中可以看出:

  • Cassandra满足AvailabilityPartition Tolerance属性。
  • HBase满足一致性分区容差属性。

帽

在Hadoop方面,HBasebuild立在HDFS的基础上,如果您已经拥有Hadoop堆栈,使用起来非常方便。 它也支持Cloudera,它是Hadoop的标准企业分布。

但是Cassandra也与Hadoop更加融合,即正在stream行的Datastax Brisk。 现在,您也可以使用一些Cassandra提供的输出格式(例如BulkOutputFormat )将来自Hadoop作业输出的数据本地stream式传输到Cassandra集群中。我们已经不再是Cassandra只是一个独立项目的地步。

根据我的经验,我发现Cassandra对于随机读取来说非常棒,而对于扫描来说并不是那么重要

为了给图片添加一些色彩,我一直在同一个基础设施上使用这两种工具,而HBase与Cassandra有着非常不同的用途。 我主要使用Cassandra进行实时非常快速的查找,而我更多地使用HBase来处理延迟要求较低的重要ETL批处理作业。

这是一个真正值得一篇博客文章的问题,所以我不想将这两个系统之间的许多关键区别总结为一个文章 。 底线是,没有优秀的解决scheme恕我直言,你应该真的考虑你的用例,看看哪个系统更适合。

我们必须比较两个数据库的利弊,并根据业务需求做出谨慎的决定。

卡桑德拉

优点:

  1. 满足CAP理论的可用性划分最终一致
  2. 具有无单点故障的大型集群可扩展
  3. 像开发语言SQL一样,开发人员可以轻松地从RDBMS背景转换
  4. 只要最终的一致性语义足以满足用例,Cassandra就具有出色的单行读取性能
  5. Datastax的支持是一个很大的优势
  6. 优化写入

缺点:

  1. 不支持基于范围的行扫描
  2. 不支持primefaces比较和设置
  3. Cassandra不支持协处理器function
  4. Cassandra支持列名称已知的列族的二级索引 。 (不在dynamic列上)。
  5. Cassandra节点不支持Cassandra中的聚合

HBase的

优点:

  1. 一致性强 ,符合CAP理论的一致性和划分
  2. RDBMS等价触发器和存储过程
  3. Hadoop支持
  4. 基于范围的行扫描
  5. 支持primefaces比较和设置
  6. 针对读取进行了优化,由单写主机支持
  7. 支持聚合
  8. 高可扩展性和数据自动分片

缺点:

  1. 缺乏发展友好的语言
  2. 不支持对单个行进行读取负载平衡
  3. 行间操作不是primefaces的
  4. 如果只使用一个HBase Master 则会出现单点故障

看看第1条 , 第2条和这个演示文稿的进一步细节。