1. hdfs机器迁移,执行sbin/stop-dfs.sh
报错:
hadoop001: no namenode to stop
hadoop001: no namenode to stop
hadoop001: no datanode to stop
hadoop001: no datanode to stop
hadoop001: no datanode to stop
Stopping journal nodes [hadoop001 hadoop001 hadoop001]
hadoop001: no journalnode to stop
hadoop001: no journalnode to stop
hadoop001: no journalnode to stop
Stopping ZK Failover Controllers on NN hosts [hadoop001 hadoop001]
hadoop001: no journalnode to stop
hadoop001: no zkfc to stop
无法关闭
问题的原因是hadoop在stop的时候依据的是启动是保存到pid文件的pid.而默认的进程号保存在/tmp下,linux 默认会每隔一段时间(一般是一个月或者7天左右)去删除这个目录下的文件。因此删掉hadoop- dc-namenode.pid文件后,namenode自然就找不到datanode上的这个进程了。(不同的进程的进程id文件名会有变化)
解决:
针对这次集群关闭,我们需要做的是:首先保证集群没有负载,然后去手动杀死datanode/journalnode/zkfc最后去杀死namenode(注意顺序)
永久解决:
在配置文件hadoop_env.sh中配置export HADOOP_PID_DIR可以解决这个问题。