일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- Namenode
- Example DAG
- Scala
- slack app
- hadoop
- HDFS
- Kafka
- 정규표현식
- jupyter
- HDP
- docker
- java
- re
- LDAP
- HBase
- yarn
- Windows
- 람다 아키텍처
- MapReduce
- Lambda architecture
- HIVE
- ambari
- execution_date
- NoSQL
- Service
- 빅데이터
- slack
- SlackWebhookOperator
- airflow
- python
- Today
- Total
IT 삽질기
Namenode safe mode 본문
이번 글에서는 Namenode의 safe mode에 대해서 알아보도록 하자.
Namenode Safe mode
safe mode는 일반적으로 Namenode(NN)가 새로 시작되는 경우에 들어가게 되는데
Namenode가 새로 시작되게 되면 지난번 글에서 설명했던 것과 fsimage와 edits log를 병합하는 과정을 거치게 된다.
2021.07.26 - [BigData/Hadoop] - Namenode fsimage, edits log
이런 과정이 수행되는 동안 NN는 safe mode에 들어가게 되는데, 이 상태에서는 데이터를 조회하는 것은 가능하지만, 파일을 변경하는 작업은 할 수 없다.
fsimage와 edits log 병합 이외에 어떤 작업이 이루어질까?
지난 글에서 NN는 블록이 어디에 저장되어 있는지 파일로 관리하지 않고 Datanode(DN)로부터 blockreport를 전달받아 메모리상에 올려서 관리한다고 했다.
safe mode에서는 이런 과정도 포함된다. DN로부터 blockreport를 전달받아 메모리에 올려 관리하게 되고, DN의 응답을 기다리기 어려운 상황이라면 NN는 블록을 새로운 DN에 복제하는 과정을 시작한다. 이는 실제로 매우 비효율적인 작업으로 권장되지 않는데, DN에 있는 블록을 삭제하지 않고 새로운 블록을 복제하는 작업으로 DN에게 정상적으로 blockreport를 전달받으면 자연스럽게 해결된다.
Safe mode의 종료
safe mode는 언제 끝나게 될까?
위에서 언급한 작업이 진행되며 최소 복제 조건을 만족한 후 기본 설정값(dfs.namenode.safemode.extension)으로 30초가 지나면 safe mode에서 벗어나게 된다. 최소 복제 조건이란 replication 3을 말하는 것이 아니라 쓰기 작업이 성공하기 위한 최소 복제본의 수를 말하며, 이후 복제 작업을 거쳐 replication 3에 맞는 복제본을 가지게 된다.
최소 복제 조건의 기본값은 1로 설정되어 있어 a라는 블록에 대해 하나의 DN이라도 blockreport를 보내온다면 NN은 해당 블록이 정상적으로 있다고 판단하여 safe mode를 종료할 수 있게 되는 것이다.
참고자료
https://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html
'BigData > Hadoop' 카테고리의 다른 글
Combiner 함수 (0) | 2021.08.18 |
---|---|
Hive managed table과 external table (0) | 2021.08.02 |
Namenode fsimage, edits log (0) | 2021.07.26 |
Hadoop Kerberos 인증과정 (0) | 2021.06.27 |
Yarn NodeManager BindException(Close_wait) (0) | 2021.06.25 |