菜鸟The&Su第一篇大数据博客
问题:今天在学习Hbase集群开启关闭的时候,发现启动命令一切正常,但是关闭时就显示stoping hbase...............,等了一段时间发现还是无法关闭。
解决方法1:csdn里面解决方法千篇一律都是单点关闭HBASE节点,这种方法十分麻烦,需要每个节点都运行以下代码。
bin/hbase-daemon.sh stop master
bin/hbase-daemon.sh stop regionserver
解决方法2:写一个脚本直接去执行每个结点单点关闭HBASE命令,后来直接使用这个命令去关闭hbase集群,具体步骤如下:
步骤1:在/usr/bin下创建脚本stop-hbase(这是文件名,自己随便取,方便记忆就行),编写以下内容。
#!/bin/bash
#1. 遍历集群所有机器
for host in pro1 pro2
do
echo ==================== $host-Hmaster ====================
ssh $host "/export/server/hbase/bin/hbase-daemon.sh stop master"
done
#2. 遍历集群所有机器
for host in pro1 pro2 pro3
do
echo ==================== $host-regionserver ====================
ssh $host "/export/server/hbase/bin/hbase-daemon.sh stop regionserver"
done
代码解释1:第一个for中脚本遍历了名为pro1
、pro2
的机器,执行hbase-daemon.sh stop master
命令,该命令用于停止HBase中的HMaster进程。(由于我使用Pro2节点作为高可用节点,故而关闭master时,也需要关闭pro2里面的HMaster进程)
代码解释2:ssh $host就是先连接到每个节点进行操作。/export/server/这个是我存放hbase的路径,替换成你们自己的路径就行。
代码解释3:脚本又遍历了名为pro1
、pro2
和pro3
的三台机器,对每台机器执行以下操作:
- 输出一行信息,表示当前正在关闭RegionServer进程的机器。
- 执行
hbase-daemon.sh stop regionserver
命令,该命令用于停止HBase中的RegionServer进程
步骤2: 给脚本赋予权限。
chmod 777 stop-hbase
就这样两个步骤就行了。现在测试一下脚本效果。(见图片)
图1:这是启动HBASE集群成功后查看集群所有进程,发现HMaster和RegionServer全部开启成功
图2:执行stop-hbase脚本
图3:执行玩stop-hbase之后查看所有节点进程,发现hbase集群成功关闭。
至此,以后关闭hbase集群只需要执行stop-hbase就行!