面试题答案
一键面试- MemStore大小触发:
- 当单个MemStore的大小达到
hbase.hregion.memstore.flush.size
(默认值为128MB)时,会触发Flush操作。此时,该MemStore中的数据会被写入HFile文件,存储到HDFS上。
- 当单个MemStore的大小达到
- Region Server的MemStore总大小触发:
- 当Region Server上所有MemStore占用的总内存达到
hbase.regionserver.global.memstore.size
(默认值为堆内存的40%)时,会触发Flush操作。并且会按照MemStore大小的顺序,从大到小依次进行Flush,直到总内存使用量低于hbase.regionserver.global.memstore.size.lower.limit
(默认值为堆内存的35%)。
- 当Region Server上所有MemStore占用的总内存达到
- 时间触发:
- 如果MemStore中的数据在内存中停留的时间超过了
hbase.regionserver.optionalcacheflushinterval
(默认值为1小时),无论MemStore大小如何,都会触发Flush操作,将数据持久化到磁盘。
- 如果MemStore中的数据在内存中停留的时间超过了
- WAL文件数量触发:
- 当Region Server上的WAL(Write - Ahead Log)文件数量达到
hbase.regionserver.maxlogs
(默认值为32)时,会触发Flush操作。目的是减少WAL文件数量,防止日志文件过多占用磁盘空间和影响恢复效率。
- 当Region Server上的WAL(Write - Ahead Log)文件数量达到
- Region关闭时触发:
- 当Region被关闭(例如进行Region的迁移、拆分等操作时),该Region内所有的MemStore都会进行Flush操作,确保内存中的数据在Region关闭前持久化到磁盘。