1、手動分割web
爲了不拆分/合併風暴,關閉region自動拆分、合併,手動調用split和major_compact命令。shell
1 設置hbase.hregion.max.filesize爲一個很大的值,如,100Gapache
2 使用API或shell實現手動分割 、服務器
2、熱點問題app
緩解region熱點問題函數
手動將熱點region分割成一個或多個region,而後將子region負載分佈到多個region服務器上。工具
什麼是表熱點?oop
對於擁有多個region的表來講,大多數的region分佈並不均勻,即大多數region在同一個服務器上。spa
解決表熱點問題?orm
方法1: 使用HBase shell 或 HBaseAdmin類中的API,經過move()函數顯示的移動region到另一臺服務器上。
方法2: 使用unassign()方法或者shell命令簡單地從當前服務器移除受影響表的region,master會當即將其部署到其餘
region服務器上。
3、預分配
1 建表時預分配:使用HexStringSplit
create 'poidb', { NAME => 'info', COMPRESSION => 'snappy' }, {NUMREGIONS => 9, SPLITALGO => 'HexStringSplit'}
2 建表時預分配:指定startkey endkey
create 'testtable', 'colfam1', { SPLITS => [ 'row-100', 'row-200','row-300', 'row-400' ] }
3 查看60010 端口,hmaster進程,看新建表的分區。
4、合併region
1 使用工具類:hbase org.apache.hadoop.hbase.util.Merge
hbase org.apache.hadoop.hbase.util.Merge table \
poidb,1c71c71c,1401350387344.163071a6eb98d44e0e6d087ff9e48d53. \
poidb,38e38e38,1401350387344.86b9bb5b0989dcfe955c18f4a74450c7.
2 原理:在每一個region中讀取存儲文件,並將它們合併成一個新的存儲文件。