這個文檔置頂很久了,還是寫點東西吧。
HBase這個東西的入庫速度說實在的,在多列族的情況下表現很一般,實在是不值得提。
具體的原因是由於多列族在hbase的寫入機制決定的,有興趣的可以在網上找找資料,這裏我只說單列族的情況下的我的測試結果:
集羣的規模爲9(S)+1(M)+3(C)
16G內存
8核CPU
千兆網絡
8塊7200轉的SATA硬盤
不做raid
Client方式寫入:
單個Slave的寫入速度約爲8.3MB/s
整個集羣的寫入速度約爲83MB/s
BulkLoad模式寫入:
整個集羣(不算Client,就是9+1)的寫入速度(包含了創建HFile時間)約爲160MB/s
這裏需要說明一下:
1、我在寫入的時候有很高的硬盤I/O Wait,最高達到了300ms(一般在12ms-15ms之間是正常的),這個和我當前使用的硬件有直接關係(沒有更好的,只能這樣了)。
2、關於BulkLoad在增量寫表的過程中,性能表現及其難看,不建議採用。只是適合空表情況下數據導入。
3、對於Client的寫入模式,如果做了Secondary Index,很遺憾,寫入的速度也會下降,一般來說如果增加3個索引,整個集羣的寫入速度會下降到40MB/s。
4、如何提升速度?一般來說除了解決第一條硬盤I/O Wait的問題外,可通過提升單機內存以及增加單機硬盤數量。這裏我還未做過測試。當然,增加Slave也是可以的。
5、最後需要注意一下,在設定Region塊的邊界的時候儘量符合數據的實際情況,做到均勻的散列,這樣可以保證數據寫入時所有Slave的所有硬盤都在轉。
6、還是那句話,希望有過相關測試的朋友能夠指出我當前不足,提供更高的提升方式,歡迎郵件聯繫[email protected]