HBase中建立分区(表)

1.什么是分区?

在HBase中,每个表默认时都由一个Region存储原数据,但是若当数据慢慢增加时,就会将一个Region分裂成其他若干个不同的region。但是这种无序的分裂,会让后期的表扫描,表过滤操作很不方便(特别耗时)。正是着眼于未来表的改变,才有了为表创建分区的操作。
一个有效的高性能方式是预创建空的区域。但同时需要稍微保守一点,因为过多的区域会实实在在的降低性能。根据hbaserowkey的分布,可以设置相应的region(分区)。这样就可以防止大数据插入时的热点问题,提高数据插入的效率。但是与此同时我们会遇到以下几个问题:

  • 01.首先得知道:数据的rowkey是什么样的?
  • 02.根据rowkey,需要规划一下region数目?每个regionstartkeyendkey是多少?

2.如何创建分区?

每个分区都由一对分区键控制,如果需要创建一个分区表,那么首先得确定该表以什么键分区。一般来说,因为在ASCII码表中,最大的可打印字符是~,再者就是|。所以我们就可以选择这两种字符作为分区键的标识来结束。在本篇博客里,我使用|作为分区键的结束标识。分区键的设置如下:

[root@littlelawson ~]# cat region_split_info.txt 
0001|
0002|
0003|
0004|
0005|
0006|
0007|
0008|
0009|

这里的第一行是第一个regionstopkey, 最后一行不仅是倒数第二个regionstopkey,同时你也是最后一个regionstartKey。也就是说上述的几个值都是key取值范围的分割点。通过9个分割点,便可以得到10个分区。如下所示:
_r1_|_r2_|_r3_|_r4_|_r5_|_r6_|_r7_|_r8_|_r9_|_r10_|这里的r1指的就是region1,其它以此类推。
以该文件中的内容作为分区键,创建一个含分区的表命令如下:
create 'split_table_test','cf',{SPLITS_FILE=>'region_spilit_into.txt'}
在Web UI 端,查看HBase的中的表,结果如下所示:
HBase中建立分区(表)_# HBase