我正在使用Spring + Datanucleus JDO + Hbase。 Hbase處於具有兩個節點的完全分佈式模式。我在這裏遇到嚴重的性能問題。Hbase性能
我的web應用程序可以被視爲pinger,它只是持續ping URLS並存儲它們的響應。我的應用程序爲INSERT運行多個線程進入數據庫。我觀察到,一旦併發寫入數量超過20個左右,插入開始花費很多時間(有些甚至需要1000秒)。當發生這種情況時,READS開始失敗,我的Web應用程序無法從數據庫中提取任何數據(我的Web應用程序掛起)。我不是一個NoSQL數據庫傢伙,因此不知道從哪裏開始尋找性能。
我的主要配置是: 動物園管理員法定人數尺寸:1個 HBase的regionservers:2 數據節點:2個 hbase.zookeeper.property.maxClientCnxns:400 複製因子:3
我是否需要增加堆的大小爲Hbase?高WRITE吞吐量是否會影響READ?
我的配置有問題嗎?將數據寫入Hbase似乎寫入文件會更快。這是我在Hbase的最後一次鏡頭。請幫助
@cftrnas似乎我必須做很多事情才能使它的生產值得。一個問題,但。除了hbase之外,我是否還需要對hadoop進行任何優化?我已經完成了最小化,比如增加ulimit等等。我目前無法在兩個以上的節點上運行hbase,會將複製因子降低到1嗎? –
如果這僅僅是一個開發/測試安裝,那麼是的 - 肯定是複製因子爲1.在生產中,你會需要(需要)更多的節點和3的複製。我也不能強調它是多麼重要[拆分表格](http://ofps.oreilly.com/titles/9781449396107/performance.html#perfsplitcompactpresplit)。還要考慮壓縮並增加您的區域大小。 – cftarnas
感謝您的鏈接。我實際上做了大部分在那裏提到的事情,並且現在能夠獲得良好的READ性能。我的應用掛起(讀取時)的主要問題是我的區域服務器的hbase.regionserver.handler.count的默認值(10)。當接近30個寫入發生時,我無法讀取。我沒有做過預分割表,因爲我的最大表大小是19 Mb,當它達到256 Mb時,Hbase會默認分割它。你是否仍然建議預先分裂因爲我的WRITE通過投入是非常低的。 –