閱讀273 返回首頁    go 阿裏雲 go 技術社區[雲棲]


HBase寫性能初步測試

背景


剛接觸HBase,在本機上對線下HBase集群做了初步的寫性能測試,下麵對測試內容做詳細說明。


說明


HBase環境

0.96版本,8台region server,默認配置

 

寫數據說明

單column family,兩個column qualifier的值為字符串+隨機8位正整數,Row Key為兩個quailifer值相連後串上隨機Long

比如:val1 = dd1977285, val2 =cc6549921, rowkey = rondom.nextLong() + val1 + val2


測試涵蓋到的維度

單線程、多線程比較

Rowkey不hash、Rowkey MD5 Hash (hash後每份rowkey等長,分發Region Server時隨機性更好)

單Put寫(每次Put一次RPC)、批量寫(帶write buffer的刷寫)

批量寫情況下write buffer的大小設置

 

測試未涵蓋到的維度

WAL是開啟的(線上應用不推薦關閉WAL來換取寫速度)

備份數沒有改(3份)

每台Region Server的RPC handler數目沒有設定(本次單機測試中,RPC響應肯定不會是瓶頸)

沒有使用壓縮(數據量小)

沒有比較ColumnQualifier數目增長

關於Region Server更多的係統設置都是默認的(請求數分布、region文件塊大小設置及Compaction影響、Split文件數閥值等等)

 

結果


測試結果比較:

 


總結


批量寫性能提升不少

線上應用最好是禁用buffer刷寫功能的,即每一個Put一次RPC寫,不過看到這種情況下寫速度慢,考慮到機器、網絡環境的差別的話,估計能上1K

啟用buffer刷寫功能的話,要避免未flush的put記錄丟失。(HTable在close的時候最後是會自動flush,我們在寫服務節點故障的時候也需要flush一次)

 

Rowkey哈希後性能有小量提升

Rowkey Hash之後對寫性能的確有小量提升,但如果要基於rowkey做範圍查找的話,rowkey可能不適合hash,具體看業務場景再考慮。

 

單線程每秒上萬行寫能力

本機上單線程在開啟writerbuffer刷寫後,每秒寫行數輕鬆上萬。多線程下,本機上每個線程最多到每秒7K行的速度,相信考慮到機器、網絡環境的差別的話,也能上萬。

 

並發寫能力樂觀

本機沒有模擬到多個節點上百線程的並發寫場景,不過根據前一點看的話,還是樂觀的,而且本次測試的集群級別的設置都是默認的,集群規模也一般,有很多集群級別的優化手段。

 

等項目開發到一定階段時候,會測試多節點上百線程並發寫的場景,且根據對HBase逐步的了解,之後會有更多經驗,相關測試報告再詳細產出,這份初步的測試就大致先了解下。


全文完 :)

 

最後更新:2017-04-03 07:57:02

  上一篇:go android webView.loadData亂碼解決
  下一篇:go 全國首發-Swift視頻教程-共68課時(已更新完成)