报错现象:
hadoop在stop-all.sh的时候依据的是datanode上的mapred和dfs进程号。
而默认的进程号保存在/tmp下,linux默认会每 隔一段时间(一般是一个月或者7天左右)去删除这个目录下的文件。
因此删掉hadoop-hadoop-jobtracker.pid和hadoop- hadoop-namenode.pid两个文件后,namenode自然就找不到datanode上的这两个进程了。
解决方法:
在配置文件hadoop_env.sh中配置export HADOOP_PID_DIR可以解决这个问题。
export HADOOP_PID_DIR=${HADOOP_HOME}/pids
找不到hadoop_env.sh目录
可以用WinSCP软件搜索