HBase 如何减少升级时重启rs节点造成的影响

简介: 最近被问到这个问题,一时没有很好的回答,事后仔细思考了下,整理如下。 rs节点重启对于应用的影响可分为如下2个阶段: region不可用 region读取慢 不可用的优化 从rs停止到各个region重新上线前都处于不可用阶段,其中包含了master感知到有rs退出,进而调度执行scp的过程,详细的过程可以参考我的另外一篇文章《HBase2.

最近被问到这个问题,一时没有很好的回答,事后仔细思考了下,整理如下。

rs节点重启对于应用的影响可分为如下2个阶段:

  1. region不可用
  2. region读取慢

不可用的优化

从rs停止到各个region重新上线前都处于不可用阶段,其中包含了master感知到有rs退出,进而调度执行scp的过程,详细的过程可以参考我的另外一篇文章《HBase2.0 regionServer退出处理流程》,尤其是末尾链接中的详细流程图;

而不可用阶段最为耗时的部分应该是scp的执行阶段,其核心部分伪代码如下:

if(carryingMeta)
{
    split meta log;
    assign meta region;
    wait meta loaded;
}

split log;
assign reigons;

因此减少不可用的时间主要就是简化上述过程,可用的手段有如下2个:

  1. 重启rs前先执行flush,从而减少split log以及后续replay log所需的时间;
  2. 重启rs前先把region move到其它节点去,这个方法需要获取region信息并且要自己指定目标节点,稍微麻烦一些,但是效果更彻底,因为完全不受scp执行时间影响,不可用时间缩减到1个ap的时间;

还有就是利用region replica特性,在主region不可用阶段,也能够利用副本提供读服务,这个方法的缺点,1是副本要消耗额外的io和内存资源,2是写请求依然不可用;

读取慢的优化

读取慢的原因,1是在新的rs上region的locality很可能会降低,2是blockcache是空的;

locality的问题,正常情况下在rs重启完成后,balancer会基于locality的考虑将region迁移回原rs,但由于balance的过程还受其它因素影响,所以也并不必然,因此还是主动move更好一些;

如果已将自动balance关闭, 那主动move回原节点就是自然而然的了;

blockcache的问题,可以考虑在rs停止前将其保存在本地磁盘上,重新启动时进行加载,印象中之前看过一篇分享文章中提到过这个优化;

相关实践学习
云数据库HBase版使用教程
  相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情: https://cn.aliyun.com/product/hbase   ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
Shell 分布式数据库 Android开发
HBase的Dead节点问题&&Hbase创建表时报“org.apache.hadoop.hbase.PleaseHoldException: Master is initializing”错误
HBase的Dead节点问题&&Hbase创建表时报“org.apache.hadoop.hbase.PleaseHoldException: Master is initializing”错误
170 0
HBase的Dead节点问题&&Hbase创建表时报“org.apache.hadoop.hbase.PleaseHoldException: Master is initializing”错误
|
云安全 Java Shell
EMR主节点内存异常100%,hbase服务异常
EMR主节点内存异常100%,hbase服务异常
|
分布式计算 Hadoop 分布式数据库
因为主机时间不同步导致的hbase zookeeper 节点宕机奔溃 一例
前几天 ,升级hadoop/hbase 集群, 新 添加了几十台机器, 硬件部门,安装好主机os 后就交付给我们了, 安装好软件环境,配置好,就启动接入集群了,运行了一个礼拜,系统运行正常。 昨天的时候淘汰一台旧机器,上面跑了zookeeper , 需要准备一个新的zookeeper 节点来代替,如实就找了一台hbase 节点上启动了zookeeper 这个时候问题来了, zookeeper 启动后总是在报错, 一直在确定自己的状态。
522 0
|
存储 分布式数据库 Hbase
重磅|阿里云HBase Ganos全新升级,推空间、时空、遥感一体化基础云服务
Ganos是阿里云时空PaaS服务的自研核心引擎。Ganos已作为云数据库时空引擎与数据库平台融合,建立了以自研云原生数据库POALRDB为基础,联合NoSQL大数据平台(Ali-HBASE和X-Pack Spark)的完整时空地理信息云化管理解决方案。
2807 0
|
4月前
|
Java Shell 分布式数据库
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
82 0
|
8月前
|
SQL 分布式计算 Hadoop
Hadoop集群hbase的安装
Hadoop集群hbase的安装
140 0
|
4月前
|
分布式计算 Hadoop 关系型数据库
Hadoop任务scan Hbase 导出数据量变小分析
Hadoop任务scan Hbase 导出数据量变小分析
53 0
|
3月前
|
存储 分布式计算 Hadoop
Hadoop中的HBase是什么?请解释其作用和用途。
Hadoop中的HBase是什么?请解释其作用和用途。
40 0
|
4月前
|
SQL 分布式计算 Hadoop
Hadoop学习笔记(HDP)-Part.16 安装HBase
01 关于HDP 02 核心组件原理 03 资源规划 04 基础环境配置 05 Yum源配置 06 安装OracleJDK 07 安装MySQL 08 部署Ambari集群 09 安装OpenLDAP 10 创建集群 11 安装Kerberos 12 安装HDFS 13 安装Ranger 14 安装YARN+MR 15 安装HIVE 16 安装HBase 17 安装Spark2 18 安装Flink 19 安装Kafka 20 安装Flume
82 1
Hadoop学习笔记(HDP)-Part.16 安装HBase