HBase(3):内部机制flush & compact & split

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>

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值