본문 바로가기
BigData 기술/Hadoop

[HDFS] 네임노드 SafeMode 켜지는 경우

by 잇서니 2020. 7. 14.
반응형

 

네임노드 시작 과정

  • fsimage를 메모리에 로딩
  • editlog를 읽어 fsimage에 반영 (체크포인팅)
  • 데이터노드가 블록리포트를 보내줌
  • safemode에 진입하고, 데이터노드가 보내준 블록리포트 정보를 토대로 블록 복제수가 일정 수준까지 만족했는지 확인한다.
  • 만족했으면 safemode에서 빠져나온다.
  • ...

 

아래 글에 네임노드 시작과정을 자세하게 정리해두었다.

 

네임노드 SafeMode 시

  • HDFS 읽기는 가능하다.
  • HDFS 쓰기가 불가능하다.

 

네임노드 SafeMode는 언제 켜질까?

1) 네임노드를 시작할 때

  • 블록 복제수가 일정 수준(dfs.namenode.safemode.threshold-pct = 0.999f)을 만족하는지 확인 되어야 safemode를 빠져나온다. 예를 들어 전체 블록수가 900개(300*3)라고 해보자. 그러면 블록 복제수가 900개 x 0.999f 개가 있다는 것이 확인 되어야 safemode를 빠져나온다는 뜻이다.
  •  그러나,데이터노드가 블록리포트를 보내주지 않는다면? 혹은 블록리포트를 보내주는데 오래 걸린다면?
    • 네임노드는 블록 복제수를 확인할 수가 없게 된다. 그러니 블록 복제수가 900개 x 0.999f 를 만족한다고 확인이 되지 않아 계속 safemode에 머물게 될 것이다.

 

2) 네임노드 디스크 공간이 부족할 때

네임노드는 dfs.namenode.name.dir 로 설정된 경로(로컬 디스크)에 메타데이터(fsimage, edits log 등)를 저장한다.  dfs.namenode.du.reserved 로 설정한 여유용량(디폴트 100MB)이 남아 있지 않다면 safemode에 진입한다.

이 경우, 네임노드 디스크 공간을 확보한 후에 safemode에서 빠져나와야 한다.

sudo -uhdfs hadoop dfsadmin -safemode leave

 

3) 관리자가 SafeMode를 켤 때

하둡 쓰기 작업을 멈추고 유지보수 작업을 하고 싶은 경우 관리자가 수동으로 safemode를 켤 수 있다.

sudo -uhdfs hadoop dfsadmin -safemode enter

현재 safemode 상태를 확인할 수도 있다.

sudo -uhdfs hadoop dfsadmin -safemode get

유지보수 작업을 마친 후에는 직접 safemode에서 빠져나오도록 한다.

sudo -uhdfs hadoop dfsadmin -safemode leave

 

네임노드가 계속 safemode에 있다면? (Name node is in safe mode)

 

> 네임노드를 시작하는 과정에서 safemode에 계속 있는 경우

/

  • 데이터노드들이 제대로 구동됐는지 확인한다. 데이터노드들이 꺼져 있다면 블록리포트를 보낼 수 없다. 그러면 네임노드는 블록 복제수를 확인할 방법이 없다. 데이터노드들이 블록복제수 확인에 필요한 블록리포트를 보내주기 때문이다.

/

  • 데이터노드들이 제대로 구동됐지만 블록리포트를 보내는데 오래 걸릴 수도 있다. 블록 개수가 많을 수록 그렇겠지?어차피 강제로 safemode를 꺼도 데이터노드가 블록리포트를 모두 보내준 상태가 아니기 때문에 under-replicated 블록이 많다고 뜰 것이다. 그러면 쓸 데 없이 블록 복제를 하게 될 것이다. (데이터노드에 블록이 있는데 아직 블록리포트를 받지 못해 네임노드는 블록 복제본이 없다고 인식하기 때문에)
  • 그러니 일단 블록리포트를 다 받을 때까지 기다려보자.

/

 

 

> 네임노드가 이미 구동중이었는데 safemode가 된 경우

  • 네임노드의 디스크 공간이 부족한 것이 원인일 가능성이 크다. (/var/log/hadoop-hdfs/hadoop-hdfs-namenode-~.log 로그파일 확인해볼 것)
  • 네임노드의 디스크 공간(dfs.namenode.name.dir)을 추가로 확보한 후에 dfsadmin 명령어를 사용하여 safemode에서 직접 빠져나온다.

 

 

참고링크

정말 정말 정리 잘 되어 있는 네임노드 구동과정

 

하둡 데몬(namenode, datanode)의 기동과정과 메커니즘 이해

2010년 무렵 하둡을 처음 접한 뒤로 개발자로서의 내 삶은 많은 변화가 있었다. 내 머릿 속에 개념으로만 존재하던 분산 컴퓨팅이 일상의 개발환경이 된 것이 그 첫번째 일 것이다. 하둡과 함께 �

likebnb.tistory.com

 

반응형

댓글