관리 메뉴

A seeker after truth

hadoop safe mode, 아무리 leave 해도 계속 ON 될때는?! 본문

Data/hadoop ecosystem

hadoop safe mode, 아무리 leave 해도 계속 ON 될때는?!

dr.meteor 2022. 4. 27. 00:35
Name node is in safe mode.
*Safe mode is ON. Resources are low on NN. Please add or free up more
resources then turn off safe mode manually. NOTE: If you turn off safe mode
before adding resources, the NN will immediately return to safe
 mode. Use "hdfs dfsadmin -safemode leave" to turn safe mode off.*

hdfs 명령 관련 작업을 하는 중 이 에러 메시지를 만나는 중이라면, 많은 검색 결과들에서

hdfs dfsadmin -safemode leave  (또는 hdfs dfsadmin -safemode forceExit,
또는 sudo -u hdfs dfsadmin -safemode leave,
또는 sudo -u  hdfs hdfs dfsadmin -safemode leave)

명령어를 입력해 해결하라고 할 것이다.

근데 저들 중 어떠한 명령을 입력해서 safe mode 를 꺼도 계속 다시 켜지는 경우가 있다.

 

 

1. 왜 그런 일이 생길까?

그 이유는 네임노드 시작 과정에 대한 내용과 함께 아래 글에서 자세히 확인할 수 있다.

https://it-sunny-333.tistory.com/99

 

따라서 할당된 공간이 부족하면 아무리 세이프모드를 꺼도 다시 on 되어 버린다.

그래서 위 글 뿐 아니라 에러 메시지도, 다른 검색 결과들에서도 모두 이 명령이 먹히지 않을 경우 파티션에 할당된 공간을 더 늘리거나 파일을 삭제해 공간을 확보하라고 한다.

 

 

2. 그렇게 하지 않고도 해결한 방법은?

그 디스크 공간을 확보하라는게 어떤 맥락인지, 어떻게 하라는 건지에 대한 보다 괜찮은 자료는 도저히 찾을 수가 없어 생각을 해보았다.

"현재의 hdfs 를 초기화하면 되겠다."

그래서 해당 방법을 찾아보았더니, 네임 노드 포맷을 다시하면 되는 것이었다. 따라서

sbin/stop-dfs.sh (또는 stop-all.sh)

로 돌아가고있는 프로세스들을 종료한 뒤,

hdfs namenode -format

으로 다시 포맷한 뒤

sbin/start-dfs.sh (또는 stop-all.sh)

로 다시 시작하고 나니, 기존에 아래 사진과 같이

leave 하고 나서도 자꾸만 on 되었던 것과 달리

leave 하고 나서 몇번을 다시 확인해봐도 제대로 off 된 것을 확인할 수 있다!

 

 

3. 참고 자료에서의 결과와 내가 실행한 결과의 차이

https://118k.tistory.com/916

위 글을 보고 네임노드 포맷을 다시 하게 됐는데, 위 글과 나의 결과의 차이는

- 네임노드 포맷을 다시 하고도 기존의 hdfs 파일들은 사라지지 않고 그대로 있었다 (본인은 로컬 환경)

- dfs.namenode.name.dir 경로에 가서 VERSION 파일의 clusterID를 변경할 필요가 없었다. 다시 포맷하고 나서 이 파일에 들어가 확인했을 때 이미 새로운 클러스터id 로 바껴 있었다.

 

 

4. safemode 로 진입하는 것을 사전 예방하자!

앞으로 hadoop 프로세스 종료 시 터미널 탭을 닫거나 하는 식으로 종료하지 말고, sbin 폴더 아래의 stop-all.sh 등 stop-XXXXX.sh 파일을 이용해 올바르게 종료하는 습관을 들이자.