2012-07-26 114 views
1

我是HBase的初學者。我目前不確定是什麼影響HBase的性能。首先,我以獨立模式運行Hbase。我用一臺機器運行一個Mapreduce程序來處理200萬條文本行,並將結果輸出到存儲在本地文件系統中的HBase表中。它花了大約1小時40分鐘。然後我改爲僞分佈式模式。 Htable文件然後存儲在HDFS中。包括程序在內的所有其他內容保持不變。然後花了3個多小時!我完全困惑。任何人都可以告訴我爲什麼會這麼快樂嗎?什麼影響Hbase性能

另一個問題,因爲我在Linux機器上創建了5個虛擬機作爲虛擬機羣,它不是很強大(8G ram。3GHz 4核CPU)。當我在一個月前運行Mapreduce計劃時,當我在單個主服務器上運行它或使用另外5個從服務器時,我看到沒有太大區別。所以我認爲CPU可能是瓶頸,但我仍然不確定。任何人都可以肯定的答案,因爲我不熟悉操作系統?我不確定這是IO瓶頸還是CPU瓶頸。我只需在6臺機器集羣上運行該程序,即可將記錄插入HBase表中,並以完全分佈的模式進行操作。它太慢了,所以我殺了這份工作。

回答

2

對於你的問題的第一部分:

顯而易見的是,僞分佈式模式將運行速度比單機模式慢。獨立運行時,HBase使用本地文件系統進行存儲。在僞分佈式模式下,HBase使用HDFS(反過來使用本地文件系統),因此您有一個額外的IO軟件層。而且,在僞分佈模式下,您可能在同一臺計算機上有多個服務器線程,執行諸如複製(每個數據被複制幾次)之類的事情,這不會在獨立模式下發生。

一般來說,對於小的(足夠的)數據來說,更集中的東西(就像獨立的)一樣,你會有更好的性能。但是分佈式模式對於大規模應用來說非常重要,因爲總有一天您將達到單臺機器的可擴展性極限。然後在分佈式模式下,我們需要處理諸如複製之類的事情,最終會降低整體性能。

關於問題的第二部分,您不應該期望在這些設置中具有良好的性能。你必須考慮到有很多軟件層:HBase,HDFS,Java,虛擬機。每個層都會增加開銷。使用分佈式從機時,由於所有服務器共享相同的硬件,因此速度更慢。

如果您希望看到性能提高,請考慮在Linux操作系統中使用獨立模式,而不是虛擬機。然後在真正的集羣中使用真正的分佈式模式(而不是虛擬機)(如果可以的話,甚至可以連接幾臺聯網的消費電腦)。你應該期望每秒大約1K〜3K次。

相關問題