HBase寫效能優化之引數篇

2021-09-01 21:28:59 字數 1203 閱讀 2456

hbase.regionserver.handler.count (hbase-site.xml)

預設值:10

引數說明:每個region server上的rpc handler的數量,提公升rpc handler的數量可以一定程度上提高hbase在處理大量併發時接收請求的能力

hbase_heapsize(hbase-env.sh)

預設值:1000m

引數說明:hbase對記憶體的消耗比較大,預設的記憶體分配太小了,建議將記憶體總大小的一半分配給hbase_heapsize

hbase_opts(hbase-env.sh)

預設值:useconcmarksweepgc

引數說明:useconcmarksweepgc為併發收集器,併發收集在應用執行時進行收集,所以必須保證收集完成之前有足夠的記憶體空間供程式使用,否則會出現「concurrent mode failure」

預設觸發gc的時機是當年老代記憶體達到90%的時候,調整到70%~80%左右會比較好-xx:cmsinitiatingoccupancyfraction=指定還有多少剩餘堆時開始執行併發收集。

主要是為了避免發生full gc

參考文章:

hbase.hregion.memstore.mslab.enabled(hbase-site.xml)

預設值:

在0.94版中(當前使用)預設值是 false,

在0.92版中(當前使用)預設值是 true,

在0.90版中(當前使用)預設值是 false

引數說明:

設定為true時,可以減少因記憶體碎片導致的full gc,提高整體效能。

原理:相當於預先分配記憶體,避免每乙個值都要從堆裡分配記憶體,減少記憶體碎片,缺省會分配2mb大小的chunk(可以通過hbase.hregion.memstore.mslab.chunksize設定chunk的大小)在每個region上,當chunk滿時會進行flush。

但是也需要考慮mslab的大小= regions * number of column families * 2mb ,對於region數量過多會導致占有比較多的記憶體,是否會影響到應用的效能問題,這可能是導致apache官方對這個引數的預設值進行修訂的原因

官方解釋:

HBase之效能優化

3.讀表操作 3.1 多htable併發讀 建立多個htable客戶端用於讀操作,提高讀資料的吞吐量,乙個例子 static final configuration conf hbaseconfiguration.create static final string table log name u...

Hbase效能優化之配置

減少zk 超時時間 建議 1分鐘 rs與zk的 timeout 預設為3 分鐘,由 zookeeper.session.timeout property 決定。也就是說,如果乙個 rs掛了,那麼 master需要3 分鐘之後才能對其進行重啟和恢復。建議調成 1分鐘會更低。然而,你調低之前應該先確保j...

HBase之效能優化 一

1.1 pre creating regions 預設情況下,在建立hbase表的時候會自動建立乙個region分割槽,當匯入資料的時候,所有的hbase客戶端都向這乙個region寫資料,直到這個region足夠大了才進行切分。一種可以加快批量寫入速度的方法是通過預先建立一些空的regions,這...