Hbase安装过程中,由于错误中断,可能导致Zookeeper中的信息失效,从而造成Hbase无法启动。

master.HMaster: hbase:meta,1.1588230740 is NOT online; state={… state=OPEN, ts=…, server=…, …,…}; ServerCrashProcedures=true. Master startup cannot progress, in holding-pattern until region onlined.

这时可以尝试清除Zookeeper中的hbase节点:

> zkCli.sh -server localhost:2181
> [zk: localhost:2181(CONNECTED) 0] deleteall /hbase

注意:操作前请先关闭Hbase,确保HMaster,HRegionServer都已经退出
如果 stop-hbase.sh 无法正常关闭,可以尝试使用命令关闭:

> /home/hbase-2.2.1/bin/hbase-daemon.sh stop regionserver
> /home/hbase-2.2.1/bin/hbase-daemon.sh stop master

提供两个好用的脚本,一个是在hadoop集群上执行命令的

#!/bin/bash
#文件名:ssh_all.sh
RUN_HOME=$(cd "$(dirname "$0")"; echo "${PWD}")

NOW_LIST=(`cat ${RUN_HOME}/all`)

SSH_USER="root"
for i in ${NOW_LIST[@]}; do
    f_cmd="ssh $SSH_USER@$i \"$*\""
    echo "==== $i ===="
    echo "CMD: $f_cmd"
    echo "==========="
    if eval $f_cmd; then
        echo "==== OK ===="
    else 
        echo "=== FAIL ==="
    fi
done

还有一个是复制文件的

#!/bin/bash
#文件名:scp_all.sh
RUN_HOME=$(cd "(dirname "$0")"; echo "${PWD}")

NOW_LIST=(`cat ${RUN_HOME}/other`)

SSH_USER="root"
for i in ${NOW_LIST[@]}; do
    f_cmd="scp -r $1 $SSH_USER@$i:$1"
    echo "==== $i ===="
    echo "CMD: $f_cmd"
    echo "============"
    if eval $f_cmd; then
        echo "==== OK ===="
    else
        echo "=== FAIL ==="
    fi
done

需要同时在目录下添加两个文本文件:

all,文件内容为,所有服务器主机名,如:

“Namenode1” “Namenode2” “Datanode1” “Datanode2” “Datanode3” 

other,文件内容为,除了本机以外的其他服务器主机名,如当前服务器为Namenode1,文件内容:

“Namenode2” “Datanode1” “Datanode2” “Datanode3” 
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐