HDFS를 재시작하다 보면 간혹 Namenode is safe mode라는 메시지를 접할 때가 있다.
보통 비정상적으로 종료될 때 발생하는 것으로 알고 있는데, 꼭 그런 것만은 아닌 것 같다.
먼저 Safe-Mode를 알기 위해서는 네임노드가 start 되는 과정을 알아야 한다.
- fsimage 로딩
- editlog 증분 로딩 <-- Read 가능 시점
-
데이터노드로부터 받은 블록 정보를 로딩된 정보와 비교(Block Reporting)
네임노드가 3번 작업이 진행되는 동안 네임노드는 safe mode에 있다고 한다. 3번이 완료되면 safe mode를 벗어나 Write가 가능한 시점이 되는데, 완료되기 전 dfsadmin command를 통해서 safe mode에서 나올 수도 있다.(강제로 Safe-Mode를 벗어나면 문제가 있을 수도 있지 않을까 생각한다.)
"Hadoop The Definitive Guide" 라는 책 410 페이지를 보면 Safe-Mode 관련 옵션을 아래와 같이 소개하고 있다.
-
dfs.namenode.replication.min(기본값 1)
hdfs의 복제본 기본값은 3이다. 즉, 특정 블록이 valid한 블록이라고 인정하려면 3개가 잘 있는지 확인해야 할 것이다.
dfs.namenode.replication.min 옵션은 네임노드가 데이터노드로부터 블록 정보를 받아서 비교하는데, 최소 1개(기본값) 블록 정보만 비교해 보고 valid하다고 판단하게 된다. -
dfs.namenode.safemode.threshold-pct(기본값 0.999)
네임노드가 갖고 있는 전체 블록 정보 중 dfs.namenode.replication.min을 만족하는 블록의 비율이 설정된 비율(이상)이 되었을 때, safe mode를 벗어날 수 있는 상태가 된다.
-
dfs.namenode.safemode.extension(기본값 30초)
dfs.namenode.safemode.threshold-pct에 도달하더라도 바로 safe mode를 벗어나는 건 아니다. 30초(기본값)가 지나야 safe mode를 벗어난다.(이 시간은 왜 있는지는 잘 모르겠다). 책에는 작은 클러스터의 경우 0초로 설정해도 된다라고 언급하고 있다.
참고
- http://develop.sunshiny.co.kr/i/entry/891
- https://tecadmin.net/hadoop-namenode-safe-mode/
- https://community.hortonworks.com/questions/11042/how-to-verify-if-namenode-is-good-to-leave-safemod.html
'BigData > Hadoop' 카테고리의 다른 글
mapreduce.task.io.sort.mb 옵션이란? (0) | 2017.05.18 |
---|---|
HDFS에 파일을 저장할 때, 데이터 노드 장애로 Replication을 모두 저장하지 못한 경우 (0) | 2017.04.24 |
HDFS 네임노드에서 metadata size 한계는 어떻게 될까? (0) | 2017.04.24 |
[하둡완벽가이드] 3장 HDFS (0) | 2017.04.19 |
Hadoop shell 사용법 (0) | 2016.02.10 |