版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/daerzei/article/details/81741144
Zookeeper一直跑得都是正常的,但是今天不知道为什么启动不起来了,这里记录一下解决问题的过程。
启动Zookeeper
:
bin/zkServer.sh start
错误信息:
[dong@spark01 zookeeper]# bin/zkServer.sh start
JMX enabled by default
Using config: /opt/cdh/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... already running as process 2842.
查看是否真的启动:
Zookeeper
的进程名叫QuorumPeerMain
ok,可以看下启动脚本的代码(可以在代码中搜一下相关的错误提示):
if [ -f $ZOOPIDFILE ]; then ## 判断$ZOOPIDFILE这个文件是否存在
## kill -0 表示不发送任何信号给PID对应的进程,但是仍会对变量值PID对应的
## 进程是否存在进行检查,如果$pid对应的进程存在,则返回0,不存在返回1
## /dev/null 2>&1; 表示不输出错误信息
if kill -0 `cat $ZOOPIDFILE` > /dev/null 2>&1; then
# 这就是我们看到的报错了
echo $command already running as process `cat $ZOOPIDFILE`.
exit 0
fi
fi
分析启动脚本我们可以知道错误的原因是:
机器异常关闭缓存目录中残留PID文件。
嗯,之前的时候服务器异常断电过,
OK,那就查看一下缓存目录吧:
[dong@spark01 zkData]$ ll
删除此文件:
[dong@spark01 zkData]$ rm -rf zookeeper_server.pid
再次启动:
bin/zkServer.sh start
bin/zkServer.sh status
启动正常: