【问题标题】:Why HBase is a better choice than Cassandra with Hadoop?为什么 HBase 是比 Cassandra 和 Hadoop 更好的选择?
【发布时间】:2013-02-03 17:38:41
【问题描述】:

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

谁能详细解释一下?

谢谢

【问题讨论】:

    标签: hadoop cassandra nosql hbase cap-theorem


    【解决方案1】:

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

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

    • 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 批处理作业。

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

    【讨论】:

    • MySql 如何在您的图表中具有可用性?可用性如何定义?这对我来说没有意义,我认为您必须在 C 或 A 之间进行选择,而不是任何 2。codahale.com/you-cant-sacrifice-partition-tolerance
    • @user1944408 当然在每个系统中都有妥协的感觉,这只是为了说明滑动依赖。你不可能100%地获得一个财产而保留100%的另一个财产,你必须做出一些取舍。您的文章假设了分区容错性,因此您当然不能在此假设下同时具有一致性和可用性。取自同一本书,CA 线上的系统可以是分布式事务的两阶段提交,因此当网络分区发生时系统会阻塞。
    • 也就是说分区发生时它们不可用,对吧?但这与 HBase 相同,因此这意味着 HBase 是 CA。我认为数据库可以是 CP 或 AP,但不能是 CA。 CA 数据库的哪个属性不包含在 CP 数据库中?你能给我一个例子吗?如果发生分区,HBase 和分片 MySql 有什么区别?
    【解决方案2】:

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

    卡桑德拉

    优点:

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

    缺点:

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

    HBase

    优点:

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

    缺点:

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

    请查看article 1article 2 和此presentation 了解更多详情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-21
      • 2015-09-14
      • 2021-03-06
      • 1970-01-01
      • 2010-09-22
      • 2015-03-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多