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版本之后的主要有三个策略:

       Region中任意一个storefile的大小超过这个值就要进行分裂,默认是10G。注意分裂是针对整个region,而不仅仅是这个超过大小的storefile。 这是0.94之前版本的默认策略。

       0.94之后的默认策略。

4.分裂的过程

   (1)efef

 

 

 

参考文档:

http://blog.csdn.net/dcswin/article/details/52335293

https://hortonworks.com/blog/apache-hbase-region-splitting-and-merging/

posted on 2017-09-14 17:30  yanzibuaa  阅读(1690)  评论(0编辑  收藏  举报