HBase 分裂(split)
1. 为什么split
最初一个Table 只有一个region(因此只能存放在一个region server上)。随着数据的不断写入,HRegion越来越大,当到达一定程度后分裂为两个,通过负载均衡可以将不同的region分配到不同的region server上,发挥分布式系统的优点。
注意:compact的对象是针对某几个storefile,但是split的对象是整个region的所有的storefile。(我的理解,待确认)
2. split的三种方式
-
pre-spliting (预分裂)
建表时指定。
-
auto spliting(自动分裂)
系统根据分裂策略自动进行。
-
FORCED SPLITS(强制分裂)
也称手动分裂, 客户端手动运行split命令进行分裂。
3.触发条件
- memstore flush之后可能产生较大的HFile,HBase会判断是否需要split
- compact之后可能产生较大的HFile,HBase会判断是否需要split
- 手动发起spit时
4.分裂的策略
HBase0.94.0版本之后的主要有三个策略:
- ConstantSizeRegionSplitPolicy:HStore file固定大小策略
Region中任意一个storefile的大小超过这个值就要进行分裂,默认是10G。注意分裂是针对整个region,而不仅仅是这个超过大小的storefile。 这是0.94之前版本的默认策略。
- IncreasingToUpperBoundRegionSplitPolicy,:根据region数进行分裂。
0.94之后的默认策略。
4.分裂的过程
(1)efef
参考文档:
http://blog.csdn.net/dcswin/article/details/52335293
https://hortonworks.com/blog/apache-hbase-region-splitting-and-merging/