对于MapReduce工作,Cassandra优于HBase的优势是什么?
我有很多小文件,我想从HDFS移动到数据库,并且文件将输入MapReduce作业。我不接受所有文件,但是对于某个用户,可能是整行,至少是一个列族。我可以从某个时期获取文件。
我知道HBase是 Hadoop数据库,所以我希望它能集成到我需要的东西,但我也读到Cassandra有更好的性能。但我想知道当您将其用作 MapReduce 作业的输入时的情况。性能是否仍然比HBase好很多?
我必须强调一点,我不是在寻找HBase和Cassandra的比较,而是在MapReduce工作的具体情况下。像this这样的问题没有具体谈论MapReduce作业的性能。此外,我正在寻找新的信息(我提到的问题是从2011年开始,我相信从那时起可能会有一些变化)。
答案 0 :(得分:0)
两个数据库都具有出色的读写性能。可能HBase用于批量阅读比Cassandra有更好的表现。但是由于它的设计,我有两个用例,因为HBase的工作速度比Cassandra快得多。
首先,当您需要地图时,只根据列名减少部分数据,例如:一个html页面和一些解析的信息。您将html放在一个列族中,将解析后的信息放在其他列中。不同的列族位于HDFS中的不同文件中,因此只读一个,您不需要阅读其他文件。这为您提供了显着的性能优势,因为如果您需要只读解析数据,那么占用的空间比html少几倍。在Cassandra的情况下,您需要阅读整张表。
第二,当您需要按行顺序或基于此顺序的表的某些部分排序的访问信息时,例如。从某个域读取html页面。对于HBase,您可以将行键作为域和URL的总和。对于未散列行密钥的情况,HBase具有良好的平衡器。但Cassandra没有,或者你应该在这种情况下使用一些技巧进行平衡,或者需要扫描整个表格。
希望这个用例会给你一些图片,何时更好地使用HBase和Cassandra。