我們主要考慮的硬件資源:內(nèi)存、CPU、磁盤(pán)
CPU
CPU資源:HBase是一個(gè)CPU敏感型業(yè)務(wù)喊积,無(wú)論數(shù)據(jù)寫(xiě)入讀取,都會(huì)因?yàn)榇罅康膲嚎s解壓操作玄妈,特別耗費(fèi)計(jì)算資源乾吻。因此對(duì)于HBase來(lái)說(shuō)纤勒,CPU越多越好快压。
內(nèi)存、磁盤(pán)
官方文檔給出的一個(gè)推薦范圍region個(gè)數(shù)在20~200之間荔棉,而單個(gè)Region大小控制在10G~30G酝锅。
磁盤(pán)與內(nèi)存的對(duì)應(yīng)
公式:
Disk Size / Java Heap = RegionSize / (MemstoreSize * ReplicationFactor * HeapFractionForMemstore )公式由來(lái)
硬盤(pán)容量緯度下Region個(gè)數(shù):Disk Size / (RegionSize *ReplicationFactor)
Java Heap緯度下Region個(gè)數(shù):Java Heap * HeapFractionForMemstore / MemstoreSize參數(shù)配置
對(duì)應(yīng)HBase/HDFS配置參數(shù):
hbase.hregion.max.filesize/(hbase.hregion.memstore.flush.size *dfs.replication * hbase.regionserver.global.memstore.lowerLimit)-
示例
按以下默認(rèn)配置(0.94版本)
- 10GB regions
- 128M memstores
- HDFS replication factor of 3
- RegionServer中所有MemStore存在JVM內(nèi)存中的比例上限 0.4
得到10GB/128MB*3*0.4 = 96
Hlog
HBase對(duì)于每一個(gè)regionserver配置hlog的參數(shù)
hbase.regionserver.hlog.blocksize = HDFS block size
hbase.reionserver.logroll.mutiplier = 0.95
hbase.reiongserver.maxlogs = 32
hbase.regionserver.global.memstore.lowerLimit <=
hbase.regionserver.hlog.blocksize*
hbase.reionserver.logroll.mutiplier*
hbase.reiongserver.maxlogs
128MB * 0.95 * 32 = 4T >= 10GB * 0.4
參考:
http://hadoop-hbase.blogspot.com/2013/01/hbase-region-server-memory-sizing.html