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中读取存储文件,并将它们合并成一个新的存储文件。