Hbase预分区

在创建表的时候指定分区的分割点。。

一、命令行形式

1、hbase shell命令行里创建表是使用SPLITS指定一个数组,在数组中指定切割点。

hbase会自动以数据的元素为分割点(分割前会先排序,避免手滑导致顺序颠倒,然后出现分区的startKey大于endKey的情况)。下面数据有四个元素,则会分割出五个region。

 create 'staff1','info1','porartition1',SPILTS=>['1000','2000','3000','4000']

分割后的情况如图:

2、把切割点放在本地文件中,然后创建表时指定文件路径。

文件内容:

命令:

 create 'staff3','info','partition3',SPLITS_FILE=>'/root/splits.txt'

效果:

有没有发现,文件中的dd与cc顺序颠倒,但分区还是按字典序来?证明了hbase会先排序。

 

3、以十六进制分割,这个用的很少。。

create 'staff2','info','partition2',{NUMREGIONS=>15,SPLITALGO=>'HexStringSplit'}

效果:

 

二、java api形式:

就这三种。。

第一行的不会预分区。

第二行就是命令行的指定数组形式。

第三行是指定startKey和endKey,再指定想要分成N个分区。。。。hbase会在startKey和endKey之间自动帮你计算然后分出N个分区

 

三、合理分区评估:

1、根据服务器数量:

一张表 在一个服务器上最好保持在2~3个region,有3台服务器,那么这张表的region总数保持在6~9个最好。

2、根据将来半年内到一年内的数据量:

一个region数据量不超过10G,避免到达hbase的阈值而自动分区。。。也就是说,如果预估半年到一年这张表的数量会达到100G,那么100/10=10,就需要分10个以上的region。

 

四、当数据量增长速度不符合预估怎么办,数量比预估多。。。

1、新建一张表,把旧表数据导入到新表。

2、可以使用java api专门指定分割点。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值