zookeeper启动报错:already running as process xxx

版权声明:本文为博主原创文章,未经博主允许不得转载。 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启动报错alreadyRunningAsProcessXXX_01.png
查看是否真的启动:
zookeeper启动报错alreadyRunningAsProcessXXX_02.png
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

zookeeper启动报错alreadyRunningAsProcessXXX_03.png
删除此文件:

[dong@spark01 zkData]$ rm -rf zookeeper_server.pid

再次启动:

bin/zkServer.sh start

bin/zkServer.sh status

启动正常:
zookeeper启动报错alreadyRunningAsProcessXXX_04.png

猜你喜欢

转载自blog.csdn.net/daerzei/article/details/81741144