今天啓動zookeeper的時候報錯:linux
[root@hadoop-one zookeeper-3.4.5]# bin/zkServer.sh start
JMX enabled by default
Using config: /root/zookeeper/zookeeper-3.4.5/bin/../conf/zoo.cfg
Starting zookeeper ... already running as process 947..oop
看了下947這個進程,發現是linux系統進程,應該不會衝突。又檢查了下zookeeper會使用到的幾個端口號,也都沒有被佔用。server
後來打開bin/zkServer.sh啓動腳本,搜了下會拋出上面那段話的地方:進程
echo -n "Starting zookeeper ... " if [ -f $ZOOPIDFILE ]; then if kill -0 `cat $ZOOPIDFILE` > /dev/null 2>&1; then echo $command already running as process `cat $ZOOPIDFILE`. exit 0 fi fi
看到$ZOOPIDFILE,想到應該是進程ID文件已經存在,致使啓不起來。hadoop
去dataDir下看,果真有一個zookeeper_server.pid,最後一次修改時間是幾天前了。因爲機器上次是由於斷電異常關閉,大概致使了這個pid file的殘留。it
刪掉,重啓,OK。zookeeper