2018年11月27日 23:36:48 RayBreslin 阅读数:15
1.实现功能
当向hbase数据库中存储数据的时候,实际存储过程是有三个阶段:flush & compact & split。
2.分步说明
(1)flush
Client写入 -> 存入MemStore,一直到MemStore满(Hlog)-> Flush成一个StoreFile存储在HDFS上
(2)compact
StoreFile,直至增长到一定阈值 -> 触发Compact合并操作 -> 多个StoreFile合并成一个StoreFile
(3)split
单个StoreFile大小超过一定阈值后,触发Split操作,把当前Region Split成2个Region
HMaster分配到相应的HRegionServer上
3.hbase-default.xml中相关参数
-
Flush: -
<!--当memstore的大小超过这个值的时候,会flush到磁盘。128M--> -
<property> -
<name>hbase.hregion.memstore.flush.size</name> -
<value>134217728</value> -
</property> -
<!--单个regionserver的全部memstore的最大值。超过这个值总容量(Max Heap=983.4 M)*0.4, -
一个新的put插入操作会被挂起,强制执行flush操作。 --> -
<property> -
<name>hbase.regionserver.global.memstore.upperLimit</name> -
<value>0.4</value> -
</property> -
<!--当强制执行flush操作的时候,当低于这个值的时候,flush会停止。默认是堆大小的 35% . --> -
<property> -
<name>hbase.regionserver.global.memstore.lowerLimit</name> -
<value>0.35</value> -
</property> -
Compact: -
<!--当一个HStore含有多于这个值的HStoreFiles(每一个memstore flush产生一个HStoreFile)的时候,会执行一个合并操作,把这HStoreFiles写成一个--> -
<property> -
<name>hbase.hstore.compactionThreshold</name> -
<value>3</value> -
</property> -
<!--一个Region中的所有HStoreFile的major compactions的时间间隔。默认是1天。--> -
<property> -
<name>hbase.hregion.majorcompaction</name> -
<value>86400000</value> -
</property> -
Split: -
<!--最大HStoreFile大小。若某个列族的HStoreFile增长达到这个值,这个Hegion会被切割成两个。 默认: 10G.--> -
<property> -
<name>hbase.hregion.max.filesize</name> -
<value>10737418240</value> -
</property>

本文详细解析了HBase数据库的数据存储流程,包括flush、compact和split三个关键阶段,并介绍了相关配置参数,帮助读者理解HBase如何高效管理和优化数据存储。
814

被折叠的 条评论
为什么被折叠?



