为什么HBase是Hadoop中比Cassandra更好的选择?

为什么HBase是Hadoop中比Cassandra更好的选择?,hadoop,cassandra,nosql,hbase,cap-theorem,Hadoop,Cassandra,Nosql,Hbase,Cap Theorem,为什么使用HBase比使用Cassandra和Hadoop更好 有人能详细解释一下吗 谢谢我不认为这两种都比其他的好,这不仅仅是一种或另一种。这些是非常不同的系统,每个系统都有各自的优缺点,因此这实际上取决于您的用例。它们肯定可以在同一基础设施中相互补充使用 为了更好地解释这一差异,我想借用一张图片,在这里他们讨论了CAP定理。他们说的基本上是对于任何分布式系统,您必须在一致性、可用性和分区容差之间找到平衡,并且您实际上只能满足其中两个属性。从中可以看出: Cassandra满足可用性和分区容

为什么使用
HBase
比使用
Cassandra
Hadoop
更好

有人能详细解释一下吗


谢谢

我不认为这两种都比其他的好,这不仅仅是一种或另一种。这些是非常不同的系统,每个系统都有各自的优缺点,因此这实际上取决于您的用例。它们肯定可以在同一基础设施中相互补充使用

为了更好地解释这一差异,我想借用一张图片,在这里他们讨论了CAP定理。他们说的基本上是对于任何分布式系统,您必须在一致性可用性分区容差之间找到平衡,并且您实际上只能满足其中两个属性。从中可以看出:

  • Cassandra满足可用性分区容差属性
  • HBase满足一致性分区容差特性

说到Hadoop,HBase是构建在HDFS之上的,如果您已经有了Hadoop堆栈,那么使用它会非常方便。Cloudera也支持它,它是Hadoop的标准企业发行版

但是Cassandra还与Hadoop有更多的集成,即越来越流行的Datastax Brisk。现在,您还可以使用Cassandra提供的输出格式(例如,
BulkOutputFormat
)将Hadoop作业输出的数据以本机方式流式传输到Cassandra集群中,Cassandra不再是一个独立的项目

根据我的经验,我发现Cassandra对于随机阅读来说非常棒,而对于扫描来说就不那么棒了

为了给画面增添一点色彩,我在同一个基础架构中使用了这两种方法,HBase的用途与Cassandra截然不同。我主要使用Cassandra进行实时快速查找,而更多使用HBase进行延迟要求较低的大量ETL批处理作业


这是一个值得在博客上发表的问题,因此,我不想继续下去,我想向您指出这两个系统之间的许多关键差异。底线是,IMHO没有更好的解决方案,您应该认真考虑您的用例,看看哪个系统更适合。

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

Cassandra

优点:

  • 满足CAP的可用性和分区理论和最终一致性
  • 可扩展的大型集群,无单点故障
  • 类似SQL的开发语言允许开发人员轻松地从RDBMS后台过渡
  • 只要最终的一致性语义对于用例来说足够,Cassandra就具有出色的单行读取性能
  • 税收的支持是一大优势
  • 针对写操作进行了优化
  • 缺点:

  • 不支持基于范围的行扫描
  • 不支持原子比较和设置
  • Cassandra不支持协处理器功能`
  • Cassandra支持列名已知的列族上的二级索引。(不在动态列上)
  • Cassandra节点不支持Cassandra中的聚合
  • HBase

    优点:

  • 强一致性,满足CAP理论的一致性和划分
  • RDBMS等效触发器和存储过程
  • Hadoop支持
  • 基于范围的行扫描
  • 支持原子比较和设置
  • 针对读取进行了优化,由单写主机支持
  • 对聚合的支持
  • 高可扩展性和数据自动分片
  • 缺点:

  • 缺乏友好的发展语言
  • 不支持针对单行的读取负载平衡
  • 行间操作不是原子的
  • 如果只使用了一个HBase主机,则为单点故障

  • 请看一看,这是进一步的细节。

    MySql如何在您的图表中具有可用性?可用性是如何定义的?这对我来说没有意义,我认为你必须在C或A之间选择,而不是任何2@user1944408当然在每个系统中都有一种折衷的感觉,这只是为了说明滑动依赖性。你不可能在保留一处房产100%的同时获得另一处房产的100%,你必须做出一些权衡。您的文章提出了分区容差的假设,因此当然,您不能同时具有一致性和可用性。从同一本书中可以看出,CA行上的系统可以是分布式事务的两阶段提交,因此当网络分区发生时,系统将阻塞。这意味着当发生分区时,它们不可用,对吗?但HBase也是如此,这意味着HBase是CA。我认为数据库可以是CP或AP,但不能是CA。CP数据库中不包含CA数据库的哪个属性?你能给我举个例子吗?如果发生分区,HBase和分片MySql之间有什么区别?