2015-11-05 109 views
1

谈到MapReduce工作时,Cassandra优于HBase的优势是什么?Cassandra vs HBase for Hadoop工作

我有很多我想从HDFS移动到数据库的小文件,并且这些文件将被输入到MapReduce作业中。我不会把所有的文件,但对于某个用户,所以可能整个行,至少一个列家庭。我可以从某个时间段拿档案。

我知道HBase是的Hadoop数据库,所以我期望能整合好我需要的东西,但是我也看到Cassandra有更好的性能。但是我想知道当您将它用作MapReduce作业的输入时,情况如何。性能仍然比HBase更好吗?

我必须强调一点,我并不是在寻找HBase和Cassandra的对比,而是在MapReduce作业的具体案例中。诸如this之类的问题不会具体谈论MapReduce作业的性能。另外,我正在寻找新的信息(我提到的问题是从2011年起,我相信自那以后可能会有一些变化)。

+0

谢谢您的建议,但该问题和答案可能有点过时(自2011年以来进行了多少更改?)。另外,我并不只对比较数据库感兴趣,但想知道哪些MapReduce作业具有更好的性能,并且没有关于它的任何信息。 – Marko

回答

0

这两个数据库都有很好的读写性能。批量阅读的HBase可能比Cassandra有稍好的表现。但是由于它的设计,HBase的工作速度比Cassandra快很多,所以我有两个用例。

首先,当您需要绘制地图时,只会根据列名减少一部分数据,例如,一个html页面和一些解析后的信息。你把html放在一个列族中,解析的信息放在其他列中。不同的列系列位于HDFS中的不同文件中,因此只能读取其中一个,而不需要读取其他文件。这会给您带来显着的性能优势,因为在您需要只读分析数据的情况下,这些数据占用的空间比html小几倍。在卡桑德拉的情况下,你需要阅读整个表格。

其次,当您需要按行顺序或表的某些部分排序的访问信息时,从某个域读取html页面。在HBase的情况下,你可以有一个行键作为域和URL的总和。对于不加密的行密钥的情况,HBase有一个很好的平衡器。但是Cassandra没有或者你应该在这种情况下使用一些技巧来平衡,或者需要扫描整个表格。

希望这个用例会给你一些图片,何时更好地使用HBase和Cassandra。

+0

您能否根据您的经验来解释为什么在HBase的情况下列族数量有限制? – Marko

+1

你可以阅读找到关于以下链接的解释https://www.quora.com/How-many-column-families-does-HBase-support-in-a-single-table –

+0

非常感谢你,你有一个从我这里获得这些信息。 – Marko