很久没管hadoop集群,用stop-all.sh想关掉报错:
[root@master bin]# ./stop-all.sh
no jobtracker to stop
slave2: no tasktracker to stop
slave1: no tasktracker to stop
no namenode to stop
slave1: no datanode to stop
slave2: no datanode to stop
master: no secondarynamenode to stop
问题原因在于hadoop启动停止都是通过hadoop-deamon.sh文件,脚本是通过pid文件来停止hadoop服务的。而集群默认配置的pid文件位于/tmp目录下,linux系统默认每30天清理一次/tmp目录下的文件,pid文件丢失将导致无法正确关闭相应进程。
由于pid文件已经无法找回,所以只能先用jps获取进程号,然后用kill -9杀掉对应进程,停止集群。
要彻底解决这个问题得在集群关闭之前修改conf/hadoop-env.sh文件,增加export HADOOP_PID_DIR=/usr/local/src/hadoop-1.2.1指定pid文件存放路径。