Hbase Region合并


业务场景:

Kafka+SparkStreaming+Hbase
由于数据大量的迁移,再加上业务的改动,新增了很多表,导致rerigon总数接近4万(36个节点)

组件版本:

Kafka:2.1.1

Spark:2.2.0-cdh5.12.0

Hbase:1.2.0-cdh5.12.0

问题发现:

CDH界面较多关于web服务器相应时间过长,和队列刷新速度较慢。
streaming界面,每隔一段时间就会需要较长的处理时间

解决过程:

【1】

首先把一些业务不需要的表disable掉,region下线,最后还剩2.5万个线上region,随后CDH页面无异常信息了,并且streaming处理时间都比较正常了(四类业务表现都相同)

 

【2】

由于业务上每月都会有新表,所以以上的操作不能满足,经过研究,可以在保证表的请求量不高的情况下,把当前表的region合并,从而减少region数。而且Hbase集群目前已经停掉了region自动分裂,所以不会有在合并完之后再分裂的情况。

禁用分裂机制:

 集群配置:

  理论上讲,现在regionserver分配了64G内存,0.8的写入高水位线,也就是64*0.8=51.2G用作写,每个memstore占用128M,这么算的话理论上也就每个server400多个region的时候,不会造成过早的flush,总共下来400*36个,现在已经是超负荷运行了,所以还需要将Region进行合并。

合并代码:

public class Hbase_Merge {

    public static void main(String[] args) throws Exception {

        Configuration conf = HBaseConfiguration.create();

        conf.set("hbase.zookeeper.property.clientPort", "2181");

        conf.set("hbase.zookeeper.quorum", "zk1,zk2,zk3");

        HBaseAdmin admin = new HBaseAdmin(conf);

        List<HRegionInfo> regions = admin.getTableRegions(TableName.valueOf("TableName"));

        Collections.sort(regions, new Comparator<HRegionInfo>() {

            @Override

            public int compare(HRegionInfo o1, HRegionInfo o2) {

                return Bytes.compareTo(o1.getStartKey(),o2.getStartKey());

            }

        });

        HRegionInfo regionInfo =null;

        for (HRegionInfo r : regions){

            int index =regions.indexOf(r);

            if(index %2 == 0){

                regionInfo = r;

            }else{

                System.out.println("start to merge two regions,NUM:"+index+" and "+(index+1) );

                admin.mergeRegions(regionInfo.getEncodedNameAsBytes(),r.getEncodedNameAsBytes(),false);

                System.out.println("merge two regions finished");

            }

        }

        System.out.println("merge all regions finished");

    }

}

结果:

 最终Region数大量减少,Streaming任务也恢复正常。

后记:

IO高峰为合并region导致的,入Hbase的程序都将受到影响,Streaming批处理时间增长,中间还伴随着Region-In-Transition(此处影响不大)

建议:避开业务高峰期对Region合并
 

 

 

 

这些都是之前存到有道上了,搬到这里费了好大的劲,还得不断学习,哈哈


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM