在创建Hbase表的时候默认一张表只有一个region,所有的put操作都会往这一个region中填充数据,当这个一个region过大时就会进行split。如果在创建HBase的时候就进行预分区则会减少当数据量猛增时由于region split带来的资源消耗。
HBase表的预分区需要紧密结合业务场景来选择分区的key值,每个region都有一个startKey和一个endKey来表示该region存储的rowKey范围
预分区的目的是什么?
减少由于region split带来的资源消耗。从而提高HBase的性能。
方法一
通过hbase shell来实现
create 'test01', 'info', SPLITS => ['10|', '20|', '30|', '40|']
效果图:
第二方式:
create 'test01', 'info', SPLITS_FILE => '/home/hadoop/test01.txt'
在test01文件中添加如下内容
10|
20|
30|
40|
以上语句会创建5个region:
startkey endkey
region0 - 10|
region1 10| 20|
region2 20| 30|
region3 30| 40|
region4 40|
// region0没有startKey
// region4没有endKey
// 当put的一条数据rowKey值为 11| 时则会放入region1中