參考: 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: 自定義分割