hbase-region數(shù)量
單個regionserver配置region個數(shù)的兩種方案:
根據(jù)官方推薦配置(硬盤容量)孤澎;根據(jù)內存配置
一:官方推薦配置(硬盤容量):
官方文檔給出的推薦:
regionserver上的region個數(shù)范圍在20~200簸州;每個region的大小在10G~30G之間跨嘉,比較符合實際抗悍。
配置:
regionSize的大小配置:hbase.hregion.max.filesize
單臺regionserver上的數(shù)據(jù)量=hbase.hregion.max.filesize*region個數(shù)*3
如果一臺RegionServer存儲12T數(shù)據(jù),那按照單Region為10G計算脸狸,就會分裂出400個Region最仑,很顯然不合理。此時就需要調整參數(shù)hbase.hregion.max.filesize炊甲,將此值適度調大泥彤,調整為20G或者30G。而實際上當下單臺物理機所能配置的硬盤越來越大卿啡,比如36T已經(jīng)很普遍吟吝,如果想把所有容量都用來存儲數(shù)據(jù),依然假設一臺RegionServer上分布100個Region颈娜,那么每個Region的 大小將會達到可怕的120G剑逃,一旦執(zhí)行Compaction將會是一個災難。
然而隨著硬件成本的不斷下降揭鳞,單臺RegionServer可以輕松配置40T+的硬盤容量炕贵,如果按照上述說法梆奈,越來越多的硬盤其實只是’鏡中月野崇,水中花’。社區(qū)也意識到了這樣的問題亩钟,在當前Region的概念下提出了Sub-Region的概念乓梨,可以簡單理解為將當前的Region切分為很多邏輯上小的Sub-Region鳖轰。Region還是以前的Region,只是所有之前以Region為單位進行的Compaction將會以更小的Sub-Region粒度執(zhí)行扶镀。這樣蕴侣,單Region就可以配置的很大,比如50G臭觉、100G昆雀,此時單臺RegionServer上也就可以存儲更多的數(shù)據(jù)
二:根據(jù)內存配置(hbase.regionserver.global.memstore.upperLimit)
hregionserver1對應n個region
單個region對應N個memstore及n個store
單個store對應N個storeFile(Hfile)及1個列簇
那么計算region個數(shù):((RS memory) * (total memstore fraction)) / ((memstore size)*(# column families))
實際測試大于這個計算結果的一兩倍也可以。
以上為參考性結果蝠筑。