2019独角兽企业重金招聘Python工程师标准>>>
一、手动分割
为了避免拆分/合并风暴,关闭region自动拆分、合并,手动调用split和major_compact命令。
1 设置hbase.hregion.max.filesize为一个很大的值,如,100G
2 使用API或shell实现手动分割 、
二、热点问题
缓解region热点问题
手动将热点region分割成一个或多个region,然后将子region负载分布到多个region服务器上。
什么是表热点?
对于拥有多个region的表来说,大多数的region分布并不均匀,即大多数region在同一个服务器上。
解决表热点问题?
方法1: 使用HBase shell 或 HBaseAdmin类中的API,通过move()函数显示的移动region到另外一台服务器上。
方法2: 使用unassign()方法或者shell命令简单地从当前服务器移除受影响表的region,master会立即将其部署到其他
region服务器上。
三、预分配
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进程,看新建表的分区。
四、合并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中读取存储文件,并将它们合并成一个新的存储文件。