HBase系列-RegionServer管理region數量上限

RegionServer管理region數量上限

在生產場景中,如果擁有大量數據,通常會關注每臺服務器可以擁有的最大region數。region的最大數量主要由memstore內存使用量決定。每個region都有自己的memstore,memstore大小可配置,通常在128-256 MB範圍內,請參閱hbase.hregion.memstore.flush.size。每個列族存在一個memstore(因此,如果表中有一個CF,則每個region只有一個memstore)。 RS將總內存的一小部分專用於memstore存儲(請參閱hbase.regionserver.global.memstore.size)。如果超出此內存(memstore使用率過高),則可能會導致不良後果,例如無響應的服務器或壓縮風暴。每個RS的region數量(假設一個表)的上限建議如下:

((RS memory) * (total memstore fraction)) / ((memstore size)*(# column families))

這個公式是僞代碼。以下是使用實際可調參數的兩個公式,HBase 0.98+按照第一個計算,HBase 0.94.x按照第二個計算
HBase 0.98.x

((RS Xmx)* hbase.regionserver.global.memstore.size)/(hbase.hregion.memstore.flush.size *(#column families))

HBase 0.94.x

((RS Xmx) * hbase.regionserver.global.memstore.upperLimit) / (hbase.hregion.memstore.flush.size * (# column families))

如果給定的RegionServer具有16 GB的RAM,並且使用默認設置,則利用公式(HBase 0.98.x)公式計算region個數爲:16384 * 0.4 / 128 約爲51個region。通常可以上限region數量可以是計算出來的2~3倍,那麼每個RegionServer管理的region的上限爲 150個。

參考
HBase 官方文檔

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章