为什么使用HBase
比使用Cassandra
使用Hadoop
更好?
任何人都可以对此进行详细解释吗?
由于
答案 0 :(得分:77)
我认为两者都不比其他人好,不只是一个或另一个。这些是非常不同的系统,每个系统都有自己的优点和缺点,所以它实际上取决于您的使用案例。它们绝对可以在同一基础设施中互补使用。
为了更好地解释这种差异,我想从Cassandra: the Definitive Guide借一张图片,在那里他们回顾了CAP定理。他们所说的基本上是针对任何分布式系统,你必须在一致性,可用性和分区容忍度之间找到平衡,你只能实际地满足其中2个属性。从中可以看出:
说到Hadoop,HBase是建立在HDFS之上的,如果你已经拥有一个Hadoop堆栈,它可以非常方便地使用。它也得到Cloudera的支持,Cloudera是Hadoop的标准企业发行版。
但是Cassandra还与Hadoop有更多的集成,即Datastax Brisk,它越来越受欢迎。您现在也可以使用Cassandra提供的一些输出格式(例如BulkOutputFormat
)将数据从Hadoop作业的输出本地流式传输到Cassandra集群中,我们不再仅仅是Cassandra只是一个独立项目的地步。
根据我的经验,我发现Cassandra对于随机读取非常棒,而对于扫描来说并不是那么多
为了给图片添加一点颜色,我在同一个基础设施中一直使用我的工作,而HBase的目的与Cassandra截然不同。我使用Cassandra主要用于实时非常快速的查找,而我更多地使用HBase来处理具有较低延迟要求的重型ETL批处理作业。
这个问题确实值得一篇博文,所以我不想继续下去,而是指向an article,它总结了两个系统之间的许多关键差异。最重要的是,没有优秀的解决方案恕我直言,你应该考虑你的用例,看看哪个系统更适合。
答案 1 :(得分:14)
我们必须比较专业人士和对两个数据库都有所帮助,并根据业务需求做出谨慎的决定。
<强> 卡桑德拉 强>
<强>优点:强>
<强>缺点:强>
<强> HBase的 强>
<强>优点:强>
<强>缺点:强>
有关详细信息,请查看article 1,article 2和此presentation。