hbase的memstore刷写到hdfs是受两个因素控制:大小和时间
以下是找了几个常用的参数,看一下
下面,RegionServer级别的配置,数据量到达RegionServer所运行的JVM的堆内存的40%的时候进行Flushing
<property>
<name>hbase.regionserver.global.memstore.size</name>
<value>0.4</value>
<description>Maximum size of all memstores in a region server before new updates are blocked and flushes are forced. Defaults to 40% of heap (0.4). Updates are blocked and flushes are forced until size of all memstores in a region server hits hbase.regionserver.global.memstore.size.lower.limit. The default value in this configuration has been intentionally left empty in order to honor the old hbase.regionserver.global.memstore.upperLimit property if present.</description>
</property>
下面,是Region级别的配置,当Region里面的数据量达道256M的时候进行Flushing
<property>
<name>hbase.hregion.memstore.flush.size</name>
<value>268435456</value>
<description>
<description>Memstore will be flushed to disk if size of the memstore exceeds this number of bytes. Value is checked by a thread that runs every hbase.server.thread.wakefrequency.</description>
</property>
下面,是RegionServer级别的配置,以最后一次操作RegionServer内存的时间开始算,到达1小时就开始刷写
<property>
<name>hbase.regionserver.optionalcacheflushinterval</name>
<value>3600000</value>
<description>Maximum amount of time an edit lives in memory before being automatically flushed. Default 1 hour. Set it to 0 to disable automatic flushing.</description>
</property>
HBase的内存管理中,memstore的数据刷写到HDFS受到大小和时间两个因素控制。当RegionServer的全局memstore达到堆内存的40%或单个Region的memstore达到256MB时,会触发flush操作。此外,如果最后一次操作RegionServer内存的时间超过1小时,也会自动进行flush。这些配置参数包括hbase.regionserver.global.memstore.size、hbase.hregion.memstore.flush.size和hbase.regionserver.optionalcacheflushinterval,分别用于控制不同层面的刷写策略。
1431





