hbase集群滚动重启Rolling Restart

欢迎关注本人公众号

在这里插入图片描述

概述

在我们修改了regionserver的配置后,需要对某个或所有的regionserver进行重启。
或者在集群升级到新的版本时进行滚动升级。
以上都需要尽可能的不影响业务,集群保持存活可用。

对于hbase regionserver重启,不要直接kill进程,这样会造成在zookeeper.session.timeout这个时间长的中断,也不要通过 bin/hbase-daemon.sh stop regionserver去重启,如果运气不太好,-ROOT-或者.META.表在上面的话,所有的请求会全部失败。

当然最简单的方法是停止整个集群,修改完后再重启,但是显然不适用。下面看看如何使用rolling-restartgraceful_stop来实现集群优雅滚动重启。

Rolling Restart

先看看rolling-restart.sh的参数:

[root@node1 bin]# ./rolling-restart.sh --help
Usage: rolling-restart.sh [--config <hbase-confdir>] [--autostart-window-size <window size in hours>]      [--autostart-window-retry-limit <retry count limit for autostart>] [--autostart] [--rs-only] [--master-only]       [--graceful] [--maxthreads xx] [--noack] [--movetimeout]]

我们仅对master进行重启:

[root@node1 bin]# ./rolling-restart.sh --master-only
running master, logging to /data/program/hbase-2.1.5/bin/../logs/hbase-root-master-node1.out
stopping master.
node2: running master, logging to /data/program/hbase-2.1.5/bin/../logs/hbase-root-master-node2.out
node2: stopping master.
Waiting for Master ZNode /hbase/master to expire
Node does not exist: /hbase/master

running master, logging to /data/program/hbase-2.1.5/bin/../logs/hbase-root-master-node1.out
node2: running master, logging to /data/program/hbase-2.1.5/bin/../logs/hbase-root-master-node2.out
Wait a minute for master to come up join cluster
Znode /hbase/region-in-transition does not exist

主备HMaster都会重启。期间会有短暂时间集群不可用。

我们仅对rs进行重启:

[root@node1 bin]# ./rolling-restart.sh --rs-only
node3: running regionserver, logging to /data/program/hbase-2.1.5/bin/../logs/hbase-root-regionserver-node3.out
node3: running regionserver, logging to /data/program/hbase-2.1.5/bin/../logs/hbase-root-regionserver-node3.out
node3: stopping regionserver..
node3: running regionserver, logging to /data/program/hbase-2.1.5/bin/../logs/hbase-root-regionserver-node3.out
node4: running regionserver, logging to /data/program/hbase-2.1.5/bin/../logs/hbase-root-regionserver-node4.out
node4: running regionserver, logging to /data/program/hbase-2.1.5/bin/../logs/hbase-root-regionserver-node4.out
node4: stopping regionserver...
node4: running regionserver, logging to /data/program/hbase-2.1.5/bin/../logs/hbase-root-regionserver-node4.out

上面这种方式我测试的结果是必须在重启一次master才行,而且会影响HBASE集群使用,比较尴尬。

如果指定–graceful选项,则使用bin / graceful_stop.sh脚本重新启动RegionServer,该脚本会将区域移出RegionServer,然后再重新启动。 这样比较安全,但是会延迟重新启动。

要将滚动重启限制为仅使用特定数量的线程,请使用–maxthreads选项。

手动滚动重启(推荐)

手动滚动重启的原理就是使用graceful_stop命令逐个重启regionserver,该命令会首先将region移动到其他regionserver上,重启完后再将region移动回来,比较平滑。

  1. 重启master
./bin/hbase-daemon.sh stop master
./bin/hbase-daemon.sh start master
  1. 使用graceful-stop.sh命令逐个对regionserver进行重启。编写shell脚本,重启所有regionserver:
#!/usr/bin/env bash
for i in `cat ../conf/regionservers|sort`
do 
	echo $i
	./graceful_stop.sh --restart --reload $i
done 

上述脚本会将regionservers中配置的RS服务逐个重启,并恢复。hbase扩容 缩容 一文中也有介绍graceful_stop

  1. 限速
    重新启动多个RegionServer时,限制速度很重要。缓慢重启regionserver,缓慢迁移region。
    否则由于速度过快,可能会对生产hbase集群造成严重影响。
    我们这里通过在RegionServer重新启动之间等待5分钟来解决上述问题,添加sleep 5m来实现:
#!/usr/bin/env bash
for i in `cat ../conf/regionservers|sort`
do 
	echo $i
	./graceful_stop.sh --restart --reload $i & sleep 5m
done 
  1. 再次重新启动主服务器,以清除失效的服务器列表并重新启用负载均衡器。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

快乐崇拜234

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值