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