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

Nil*_*was 40 hadoop hbase cassandra nosql cap-theorem

为什么使用HBase比使用一个更好的选择CassandraHadoop

任何人都可以对此进行详细解释吗?

谢谢

Cha*_*guy 76

我认为两者都不比其他人好,不只是一个或另一个.这些是非常不同的系统,每个系统都有自己的优点和缺点,所以它实际上取决于您的使用案例.它们绝对可以在同一基础设施中互补使用.

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

  • Cassandra满足AvailabilityPartition Tolerance属性.
  • HBase满足ConsistencyPartition Tolerance属性.

帽

说到Hadoop,HBase是建立在HDFS之上的,如果你已经拥有Hadoop堆栈,这使得使用起来非常方便.Cloudera也支持它,它是Hadoop的标准企业发行版.

但是Cassandra还与Hadoop有更多的集成,即Datastax Brisk,它越来越受欢迎.您现在也可以使用Cassandra提供的一些输出格式(BulkOutputFormat例如)将数据从Hadoop作业的输出本地流式传输到Cassandra集群中,我们不再只是Cassandra只是一个独立的项目.

根据我的经验,我发现Cassandra非常适合随机读取,而不是扫描

为了给图片添加一点颜色,我在同一个基础设施中一直使用我的工作,而HBase与Cassandra有着截然不同的目的.我使用Cassandra主要用于实时非常快速的查找,而我更多地使用HBase用于具有较低延迟要求的繁重ETL批处理作业.

这个问题确实值得一篇博文,所以我不想再继续这样做,而是想指出一篇文章,总结了两个系统之间的许多关键差异.最重要的是,没有优秀的解决方案恕我直言,你应该考虑你的用例,看看哪个系统更适合.


Rav*_*abu 14

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

卡桑德拉

优点:

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

缺点:

  1. 不支持基于范围的行扫描
  2. 不支持原子比较和设置
  3. 卡桑德拉不支持协处理器functionalit y`
  4. Cassandra支持列名称已知的列族的二级索引.(不在动态列上).
  5. Cassandra节点不支持Cassandra中的聚合

HBase的

优点:

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

缺点:

  1. 缺乏友好的发展语言
  2. 不支持针对单行的读取负载平衡
  3. 行间操作不是原子的
  4. 如果仅使用一个HBase Master,则单点故障

有关详细信息,请查看第1条,第2条和本演示文稿.