2015-11-05 106 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