参考: http://blog.csdn.net/jdplus/article/details/47273983html
http://www.tuicool.com/articles/A3uQreYshell
提升hbase的性能,最重要的方法是预分区和行键的离散度。apache
hase 存储数据,根据行键进行排序。有三种排序方式:api
1 HexStringSplit, 使用十六进制字符比较排序数组
对应的建表命令:oop
hbase org.apache.hadoop.hbase.util.RegionSplitter test_table HexStringSplit -c 3 -f tags性能
使用hbase shell:ui
create 'test_table3', { NAME => 'tags', BLOCKSIZE => '1024'},{ NUMREGIONS =>2, SPLITALGO => 'HexStringSplit' }.net
适合的rowkey类型: 以十六进制字符串做为行键rowkey或者行键rowkey的前缀是十六进制字符串orm
2 UniformSplit, 使用原始byte值排序,即便用ASCII中的256个字符进行比较进行比较的。
对应的建表命令:
hbase org.apache.hadoop.hbase.util.RegionSplitter test_table1 UniformSplit -c 3 -f tags
适合的rowkey类型:rowkey是随机的字节数组
参考: http://www.tuicool.com/articles/A3uQreY
疑问: 即便将数字的hash反转,仍然是数字,rowkey的分布只在数字的那几块region,仍然是不均匀的。待验证。
3 SplitAlgorithm: 自定义分割