HBase Flush 机制

定义在 hbase-site.xml 文件

## Count of RPC Listener instances spun up on RegionServers
## 一个 region server 可以同时处理的请求个数 (包括增删查改), 超过这个值的请求会在 Queue 里排队
hbase.regionserver.handler.count : 30


## 以下几个参数是关于 MemStore 刷入 HFile 的机制
##   1. MemStore 超过 128M 时刷入 (默认每 10 秒检查一次)
##   2. MemStore 超过 4 * 128M 时 block 更新 MemStore 的操作,并强制做 flush,这是为了处理出现 spike 的场景
##   3. 当 RegionServer 所有 MemStore 的总大小超过 RegionServer 的 heap 的 40% 时,
##      会 block 所有更新 MemStore 的操作,并强制做 flush,从占内存大的 MemStore 开始
##   4. 当 RegionServer 所有 MemStore 的总大小超过 RegionServer 的 heap 的 40% * 0.95 时,
##      选择占用内存大的 MemStore 阻塞更新操作,并进行 flush
##   5. 当 WAL(Write-ahead log,预写日志) 数量,也就是 HLog 文件数据大于 32 时,
##      会进行 flush,从最旧的 HLog 文件对应的 Region 开始
##   6. Region 的数据更新超过一定阈值 (30 millions) 时 flush
##   7. 定期 (1 小时) 进行 flush
##   8. 也可以手动刷入,HBase shell -> flush "TableName"

## if a MemStore exceed 128M, flush to HDFS HFile
## can flush in hbase shell manaully : flush ‘TABLENAME‘
hbase.hregion.memstore.flush.size : 134217728 (128M)

## block update(write,insert,delete) action if a MemStore exceed flush.size*multiplier, for spike traffic scenario
## throw RegionTooBusyException
hbase.hregion.memstore.block.multiplier : 4

## Maximum size of all memstores in a region server before new updates are blocked and flushes are forced
hbase.regionserver.global.memstore.size : 0.4

## Maximum size of all memstores in a region server before flushes are forced
hbase.regionserver.global.memstore.size.lower.limit : 95% of hbase.regionserver.global.memstore.size

## If more than this many logs, force flush of oldest region to oldest edit goes to disk. 
hbase.regionserver.maxlogs : 32

## force a flush if there are already enough changes for one region in memstore
hbase.regionserver.flush.per.changes : 30000000

## Maximum amount of time an edit lives in memory before being automatically flushed
hbase.regionserver.optionalcacheflushinterval : 3600000 (1 hour)


## Maximum HStoreFile size in HDFS
## hadoop fs -du -s -h /apps/hbase/data/data/default/REGULARDATAPHOENIXTABLE/*
hbase.hregion.max.filesize : 10737418240 (10G)
          
## The time (in miliseconds) between ‘major‘ compactions of all HStoreFiles in a region
## 多久做一次 major compact
hbase.hregion.majorcompaction : 604800000 (7 days)

## Max number of HStoreFiles to compact per ‘minor‘ compaction
## 一次 minor compact 最多操作多少个 HFile
hbase.hstore.compaction.max : 10