MST

星途 面试题库

面试题:Hbase中MemStore Flush触发条件有哪些

在HBase中,MemStore Flush是将内存中的数据持久化到磁盘的重要过程。请详细阐述MemStore Flush可能会被触发的条件有哪些。
30.6万 热度难度
数据库Hbase

知识考点

AI 面试

面试题答案

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