HDFS NameNode 안전 모드 이해와 운영

안전 모드 동작 원리 분석

1.1 서비스 개별 시작을 통한 현상 재현

모든 Hadoop 서비스를 중지한 후, 각 프로세스를 수동으로 실행하며 안전 모드의 동작을 확인할 수 있다.

stop-all.sh
jps
hdfs --daemon start namenode
jps

NameNode만 실행된 상태에서 파일 시스템 조회는 가능하지만, 데이터 조작 작업은 제한된다.

hadoop fs -ls /           # 정상적으로 디렉토리 목록 출력
hadoop fs -cat /test.txt  # 읽기 작업도 일부 환경에선 실패 가능
hadoop fs -mkdir /hello   # 오류 발생

결과 예시:

mkdir: Cannot create directory /hello. Name node is in safe mode.

1.2 Web UI를 통한 상태 확인

NameNode 웹 대시보드(Summary 탭)에서 다음과 같은 메시지를 확인할 수 있다:

The reported blocks 0 needs additional 2 blocks to reach the threshold 0.9990 of total blocks 3

이 메시지는 현재 블록 보고가 부족하여 안전 모드가 유지되고 있음을 의미한다.

1.3 DataNode 시작 후 변화 관찰

하나의 DataNode를 추가로 기동한다:

hdfs --daemon start datanode

웹 콘솔을 새로 고침하면, 블록 보고 비율이 증가하고 안전 모드가 자동 해제되는 것을 확인할 수 있다.

이후 파일 시스템 변경 작업이 정상 수행됨:

hadoop fs -mkdir /hello  # 성공

안전 모드 개념 설명

  • NameNode 시작 시, HDFS는 초기화 과정에서 일시적으로 안전 모드(Safe Mode)에 진입한다.
  • 이 단계에서는 fsimage와 edits 로그를 기반으로 파일 시스템 메타데이터를 복구하고, DataNode로부터 블록 상태를 수집한다.
  • 안전 모드 중에는 읽기(read-only) 작업만 허용되며, 파일 생성, 삭제, 수정 등의 쓰기 요청은 거부된다.
  • DataNode들이 자신의 보유 블록을 NameNode에 보고(reporting)하면서, 시스템 전체의 블록 가용률이 설정된 기준치를 넘기면 안전 모드가 자동으로 종료된다.

자동 해제 조건과 설정 파라미터

다음은 hdfs-site.xml에서 관리하는 주요 설정 항목이다:

설정 키 기본값 설명
dfs.replication 3 HDFS 파일 블록의 기본 복제 계수
dfs.replication.max 512 허용되는 최대 복제 수
dfs.namenode.replication.min 1 유효한 블록으로 간주하기 위한 최소 복제 수
dfs.namenode.safemode.threshold-pct 0.999 안전 모드 해제를 위한 블록 보고 임계 비율 (99.9%)
dfs.namenode.safemode.min.datanodes 0 안전 모드 해제 전 최소 활성 DataNode 수
dfs.namenode.safemode.extension 30000(ms) 임계 조건 달성 후 추가 대기 시간. 이 기간 동안 조건 유지 시 모드 종료

주의: threshold-pct 값이 1보다 크면 안전 모드가 영구적으로 유지되며, 0 이하일 경우 블록 보고를 기다리지 않고 즉시 해제된다.

수동 제어 명령어

관리자가 직접 안전 모드 상태를 제어할 수 있는 CLI 명령:

hdfs dfsadmin -safemode get     # 현재 모드 상태 확인 (ON/OFF)
hdfs dfsadmin -safemode enter   # 강제로 안전 모드 진입
hdfs dfsadmin -safemode leave   # 안전 모드 수동 해제
hdfs dfsadmin -safemode wait    # 안전 모드가 될 때까지 블록킹(스크립트에서 유용)

enter는 즉시 진입시키며, wait는 현재 모드 도달을 대기하는 차이가 있다. 자동 조건이 만족되지 않을 경우 수동으로 leave를 사용해 강제 해제할 수 있으나, 데이터 무결성에 주의해야 한다.

태그: HDFS namenode 안전모드 SafeMode DataNode

6월 25일 21:46에 게시됨