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合并
这些都是之前存到有道上了,搬到这里费了好大的劲,还得不断学习,哈哈
Hbase Region合并的更多相关文章
- HBase Region合并分析
1.概述 HBase中表的基本单位是Region,日常在调用HBase API操作一个表时,交互的数据也会以Region的形式进行呈现.一个表可以有若干个Region,今天笔者就来和大家分享一下Reg ...
- hbase优化之region合并和压缩
HBASE操作:(一般先合并region然后再压缩) 一 .Region合并: merge_region 'regionname1','regionname2' ,'true' --true代表 ...
- 【原创】大叔问题定位分享(13)HBase Region频繁下线
问题现象:hive执行sql报错 select count(*) from test_hive_table; 报错 Error: java.io.IOException: org.apache.had ...
- 【转】HBASE Region in Transition issue on Master UI
[From]https://community.hortonworks.com/content/supportkb/244808/hbase-region-in-transition-issue-on ...
- Hbase Region Server整体架构
Region Server的整体架构 本文主要介绍Region的整体架构,后续再慢慢介绍region的各部分具体实现和源码 RegionServer逻辑架构图 RegionServer职责 1. ...
- HBase Region重点剖析
Region的概念 Region是HBase数据管理的基本单位.数据的move,数据的balance,数据的split,都是按照region来进行操作的. region中存储这用户的真实数据,而为了管 ...
- Hbase region 某个regionserver挂掉后的处理
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAwoAAACdCAMAAAAjbX91AAAABGdBTUEAALGPC/xhBQAAAAFzUkdCAK
- hbase region 分配方式
参与 Region 分配的重要对象 在 Region 分配过程中,起着重要作用有如下一些对象. HMaster— 是 HBase 中的 Master server ,仅有一个. HRegionServ ...
- HBase Region级别二级索引
我们会经常谈及二级索引,这是对全表数据进行另外一种方式的组织存储,是针对table级别的.如果要为HBase上的表实现一个强一致性的二级索引,那么就无法逃避分布式事务,而这一直是用户最期待的功能. 而 ...
随机推荐
- js中的bind、apply、call、callee、caller的区别
1.bind.apply与call的区别与使用 相同点:2者是函数原型的一个方法,因此调用者都必须是函数,第1个参数都是对象.作用是,用另一个对象替换当前对象,另一对象也即是你传的第一个参数.通常用于 ...
- 最新快手抖音短视频源码web+APP架设教程+完整数据
最新更新快手抖音短视频源码web+APP架设教程+完整数据完美运行 视频直播源码,好东西,反正有人要就是了. 下载地址:https://pan.baidu.com/wap/init?surl=POU5 ...
- 00-JAVA语法基础
1. 原码为数的二进制数,反码是将其二进制数每一位按位取反.补码则不同,正数的补码是其原码本身,负数的补码是其除符号位以外其他每一位按位取反再加一,符号位不变. int a=100; a=a>& ...
- [python学习手册-笔记]004.动态类型
004.动态类型 ❝ 本系列文章是我个人学习<python学习手册(第五版)>的学习笔记,其中大部分内容为该书的总结和个人理解,小部分内容为相关知识点的扩展. 非商业用途转载请注明作者和出 ...
- 学习笔记——JS语言精粹
JS作用域是基于词法作用域的顶级对象. JS是一门弱类型语言,强类型能在编译时检测错误. JS是唯一一门所有浏览器都能识别的语言. 块注释对于被注释的代码是不安全的,例如/* var rm=/a*/ ...
- centos7安装zabbix server5.0
安装zabbix源 1.rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarc ...
- springmvc表单标签库的使用
springmvc中可以使用表单标签库,支持数据绑定,用来将用户输入绑定到领域模型. 例子来源<Servlet.JSP和SpringMVC学习指南> 项目代码 关键代码及说明 bean对象 ...
- JavaScript判断视频编码是否为h.264
1.视频编码是什么? 现在视频编码主流是h.264,对应着输入格式为AVC H.264/AVC是2003年制定的视频编码压缩标准 ,集中了以往标准的优点,并吸收了以往标准制定中积累的经验,采用简洁设计 ...
- 附029.Kubernetes安全之网络策略
目录 环境构建 基础环境构建 网络测试 安全策略 策略配置 策略测试 ingress方向测试 egress方向测试 to和from行为 默认策略 环境构建 基础环境构建 [root@master01 ...
- Java基础进阶:APi使用,Math,Arrarys,Objects工具类,自动拆装箱,字符串与基本数据类型互转,递归算法源码,冒泡排序源码实现,快排实现源码,附重难点,代码实现源码,课堂笔记,课后扩展及答案
要点摘要 Math: 类中么有构造方法,内部方法是静态的,可以直接类名.方式调用 常用: Math.abs(int a):返回参数绝对值 Math.ceil(double a):返回大于或等于参数的最 ...