在創建Hbase表的時候默認一張表只有一個region,所有的put操作都會往這一個region中填充數據,當這個一個region過大時就會進行split。如果在創建HBase的時候就進行預分區則會減少當數據量猛增時由於region split帶來的資源消耗。
HBase表的預分區需要緊密結合業務場景來選擇分區的key值,每個region都有一個startKey和一個endKey來表示該region存儲的rowKey范圍。
創建包含預分區表的命令如下:
> create 't1', 'cf', SPLITS => ['20150501000000000', '20150515000000000', '20150601000000000'] 或者 > create 't2', 'cf', SPLITS_FILE => '/home/hadoop/splitfile.txt' /home/hadoop/splitfile.txt中存儲內容如下: 20150501000000000 20150515000000000 20150601000000000
該語句會創建4個region:
startkey endkey region0 - 20150501000000000 region1 20150501000000000 20150515000000000 region2 20150515000000000 20150601000000000 region3 20150601000000000 - // region0沒有startKey // region3沒有endKey // 當put的一條數據rowKey值為20150516000000000時則會放入region2中
從HBase的Web UI中可以查看到表的分區
每個region的命名方式如下:[table],[region start key],[region id]