HBase的寫效率還是很高的,但其隨機讀取效率并不高
可以采取一些優(yōu)化措施來提高其性能,如:
1. 啟用lzo壓縮,見這里
2. 增大hbase.regionserver.handler.count數(shù)為100
3. 增大hfile.block.cache.size為0.4,提高cache大小
4. 增大hbase.hstore.blockingStoreFiles為15
5. 啟用BloomFilter,在HBase0,89中可以設(shè)置
6.Put時可以設(shè)置setAutoFlush為false,到一定數(shù)目后再flushCommits
在14個Region Server的集群上,新建立一個lzo壓縮表
測試的Put和Get的性能如下:
1. Put數(shù)據(jù):
單線程灌入1.4億數(shù)據(jù),共花費50分鐘,每秒能達到4萬個,這個性能確實很好了,不過插入的value比較小,只有不到幾十個字節(jié)
多線程put,沒有測試,因為單線程的效率已經(jīng)相當高了
2. Get數(shù)據(jù):
在沒有任何Block Cache,而且是Random Read的情況:
單線程平均每秒只能到250個左右
6個線程平均每秒能達到1100個左右
16個線程平均每秒能達到2500個左右
有BlockCache(曾經(jīng)get過對應的row,而且還在cache中)的情況:
單線程平均每秒能到3600個左右
6個線程平均每秒能達到1.2萬個左右
16個線程平均每秒能達到2.5萬個左右