HBase入門筆記--讀性能優化

1、前言

        在生產環境使用HBase過程當中,隨着數據量的不斷增長,查詢HBase數據變得愈來愈慢,對於業務來講是不可用的,須要對讀性能進行優化緩存

2、問題定位

        從hbase監控指標來看,發現FullGC次數頻繁,你們都知道FullGC對系統的影響很大,會使系統資源都耗在GC上,其它性能就會影響,另外一個異常是Compact隊列一直在阻塞,須要compact的文件過多又不沒法及時獲得compact,這個就致使小文件愈來愈多得不到合併影響讀性能。性能

 

3、問題解決

        初步定位到緣由以後,考慮從如下幾個方面進行優化優化

       1. 增長regionserver堆棧內存大小,此優化主要考慮到FullGC次數過多,儘可能避免Full GC的發生spa

   2.  觀察到集羣讀緩存率太低,不少時候讀的數據都不在緩存中,blockcache得不到利用,因此考慮讀寫cahce比例調整,減少讀增大memstore內存,提升寫性能,避免寫請求被阻塞線程

       3. 調整small compact線程數,原來是設置了1 個small compact,爲提升compact速率,線程調整爲3code

       4. 調整表region數,原來是對於全部的表預分配了1000個region,致使一些數據量小的表region數過多,優化後針對表的數據量調整了region的數量server

       5. 調整region hfile數量 ,  針對region hfile文件數過多的表,進行手動major_compact, 以提升讀性能blog

       6. 隔離表, 此步主要考慮到compact隊列阻塞嚴重,因此考慮將一些表用幾臺新機器進行隔離, 最本質的其實仍是下降單region的hfile數量,下降以後在定位到數據在哪一個region以後,能夠大幅減小掃描hfile的次數,具體方法以下,隊列

      

a 確認要隔離的表

b 確認隔離的機器列表

c  建立group

add_rsgroups 'test_tables'


d 將機器列表move到新建組別
move_rsgroup_servers 'test_tables',['1.1.1.1:60020','1.1.1.2:60020','1.1.1.3:60020']

c 查看上面操做是否成功
 get_rsgrup 'test_tables'

d 將須要隔離的表move到group

move_rsgroup_tables 'test_tables',['table1','table2']

    進行隔離後,發現compact阻塞嚴重的表已經降低了,最直觀的表現是讀性能從原來的10幾秒優化到200ms之內,讀性能獲得質的變化,最主要的優化是下降了每一個region的hfile數量,提升了定位數據區間的效率內存

相關文章
相關標籤/搜索