11.4 优化拆分和合并(region)

一、手动分割

  • 为了避免拆分/合并风暴,关闭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中读取存储文件,并将它们合并成一个新的存储文件。

你可能感兴趣的:(hbase权威指南)