终止dfs失效
执行stop-dfs.sh之后,会产生如下日志
Stopping namenodes on [hadoop01]
hadoop01: no namenode to stop
localhost: no datanode to stop
Stopping secondary namenodes [0.0.0.0]
0.0.0.0: no secondarynamenode to stop
根据日志可以看出来,dfs的三个进程都未终止。
原因
原因就是dfs启动之后会在/tmp下生成三个配置文件,如图:

文件名是hadoop-用户名-datanode.pid,hadoop-用户名-namenode.pid,hadoop-用户名-secondarynamenode.pid,文件内容就是你的这三个进程的pid。可以使用jps命令查看。
因为/tmp下的文件如果30天没有访问的话,就会直接删除的。所以如果这三个文件被删除了,那么执行stop-dfs.sh的时候就不知道启动的dfs的进程id,就不能正常终止dfs了。
解决办法
1.可以手动创建这三个文件
2.使用kill -9 pid进行终止,后续如果启动(也就是执行start-dfs.sh出错了),那么就执行下hadoop namenode -format,然后在重启
3.要想彻底解决,还是需要在重启之前手动配置下pid的生成目录,配置办法就是修改配置文件hadoop-env.sh下的export HADOOP_PID_DIR=${HADOOP_PID_DIR},就可以了,当然不要再放到这个目录下了
网友评论