42

为什么使用HBase比使用更好的选择Cassandrawith Hadoop

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

谢谢

4

2 回答 2

78

我不认为两者都比其他更好,它不仅仅是一个或另一个。这些是非常不同的系统,每个都有自己的优点和缺点,所以这真的取决于你的用例。它们绝对可以在同一基础设施中相互补充使用。

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

  • Cassandra 满足可用性分区容差属性。
  • HBase 满足ConsistencyPartition Tolerance属性。

帽

对于 Hadoop,HBase 构建在 HDFS 之上,如果您已经拥有 Hadoop 堆栈,则使用起来非常方便。Cloudera 也支持它,它是 Hadoop 的标准企业发行版。

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

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

为了给图片增添一点色彩,我在同一个基础设施中的工作中一直使用这两种方法,而 HBase 的用途与 Cassandra 完全不同。我主要将 Cassandra 用于实时非常快速的查找,而我更多地将 HBase 用于具有较低延迟要求的繁重 ETL 批处理作业。

这是一个真正值得写一篇博文的问题,所以我不想继续往下说,而是想给你看一篇文章,它总结了这两个系统之间的许多关键差异。底线是,恕我直言,没有更好的解决方案,您应该真正考虑一下您的用例,看看哪个系统更适合。

于 2013-02-19T06:46:45.313 回答
15

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

卡桑德拉

优点:

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

缺点:

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

HBase

优点:

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

缺点:

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

查看第 1条、第 2 条和此演示文稿以获取更多详细信息。

于 2016-01-19T10:02:41.900 回答