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