hdfs stop 시에 다음과 같은 에러가 발생하는 경우가 있다.
anymousehostname : no namenode to stop
anymousehostname : no datanode to stop
분명히 hdfs는 구동하고 있었는데 정지시킬 노드가 없다는 것인데 찾아보니
정지시키기 위한 node의 pid 정보를 디폴트로 /tmp 디렉토리에 저장해놓는데
임시디렉토리라서 /tmp 디렉토리 내의 데이터를 10일이 지나면 삭제하도록 되어있다고 한다.
그래서 찾을 수 없다는 것인데 해결 방법은 pid가 저장되는 위치를 변경하면 된다.
${HADOOP_HOME}/etc/hadoop/hadoop-env.sh 파일을 열어서 HADOOP_PID_DIR을 수정한다.
# The directory where pid files are stored. /tmp by default.
# NOTE: this should be set to a directory that can only be written to by
# the user that will run the hadoop daemons. Otherwise there is the
# potential for a symlink attack.
export HADOOP_PID_DIR=${HADOOP_PID_DIR}
export HADOOP_SECURE_DN_PID_DIR=${HADOOP_PID_DIR}
hdfs를 내린 뒤 HADOOP_PID_DIR을 ${HADOOP_HOME}/pid 로 변경하고 구동시켰더니 다음과 같이 pid 파일이 생겼다.
-rw-rw-r-- 1 may may 5 2016-09-12 17:20 hadoop-may-namenode.pid
-rw-rw-r-- 1 may may 5 2016-09-12 17:20 hadoop-may-secondarynamenode.pid
[may@anymousehostname pid]$ cat *
6615
6867