一、检查进程
1.1 检查JAVA进程 JPS
[hadoop@ruozedata001 script]$ jps
20768 DFSZKFailoverController
21538 Jps
20564 JournalNode
20247 NameNode
20359 DataNode
20968 NodeManager
20861 ResourceManager
21149 JobHistoryServer
1.2查看LINUX进程 PS
[hadoop@ruozedata001 script]$ ps -ef|grep zookeeper
hadoop 21621 20000 0 13:56 pts/0 00:00:00 grep --color=auto zookeeper
二、 找 ZK 日志文件 (CDH日志默认在/var/log/)
2.1 在配置文件中查找
2.1.1 查看配置文件 zoo.cfg,没有找到和日志相关的配置项
2.1.2 查看配置文件 log4j.properties,找到日志目录和日志文件名
zookeeper.log.dir=.
zookeeper.log.file=zookeeper.log
2.1.3 查找 zookeeper.log,鬼都没有找到
[hadoop@ruozedata001 conf]$ find /home/hadoop -name 'zookeeper.log'
[hadoop@ruozedata001 conf]$ sudo find / -name 'zookeeper.log'
[hadoop@ruozedata001 conf]$
2.2 在启动脚本 zkServer.sh 中查找日志
2.2.1根据start 定位 启动代码
2.2.2 在启动代码中找到 ZOO_LOG_DIR
2.2.3 根据ZOO_LOG_DIR向上搜索定义位置,很显然没有找到定义语句,但找到了输出日志的文件名zookeeper.out
三、 查看日志,根据日志找到错误提示
3.1 查看日志全路径
[hadoop@ruozedata001 bin]$ find /home/hadoop -name 'zookeeper.out'
/home/hadoop/zookeeper.out
3.2 查看日志,分析原因
3.2.1 查看日志
[root@ruozedata001 ~]
nohup: failed to run command ‘java’: No such file or directory
3.2.2 分析原因,java环境没有读到
[hadoop@ruozedata001 hadoop]$ ssh ruozedata001 "which java"
which: no java in (/usr/local/bin:/usr/bin)
[hadoop@ruozedata001 hadoop]$
[hadoop@ruozedata001 hadoop]$ ssh ruozedata001 "echo $JAVA_HOME"
/usr/java/jdk1.8.0_45
[hadoop@ruozedata001 hadoop]$
3.3 查看环境加载脚本 zkEnv.sh
if [ "x${ZOO_LOG_DIR}" = "x" ]
then
ZOO_LOG_DIR="."
fi
if [ "x${ZOO_LOG4J_PROP}" = "x" ]
then
ZOO_LOG4J_PROP="INFO,CONSOLE"
fi
if [ "$JAVA_HOME" != "" ]; then
JAVA="$JAVA_HOME/bin/java"
else
JAVA=java
fi
四、解决方案
4.1 第一种:直接在 zkEnv.sh 写死java路径
4.2 第二种:ssh时 加载环境变量配置文件是.bashrc,而不是.bash_profile。在.bashrc中添加java环境配置
[hadoop@ruozedata001 hadoop]$ vi ~/.bashrc
export JAVA_HOME=/usr/java/jdk1.8.0_45
export PATH=/usr/java/jdk1.8.0_45/bin:$PATH