hdfs stop 시 no namenode to stop 에러

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