일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- SlackWebhookOperator
- NoSQL
- jupyter
- 람다 아키텍처
- Namenode
- 정규표현식
- HIVE
- re
- HBase
- ambari
- HDFS
- python
- LDAP
- execution_date
- Example DAG
- Windows
- java
- Service
- yarn
- MapReduce
- docker
- slack app
- Lambda architecture
- slack
- hadoop
- Scala
- Kafka
- 빅데이터
- HDP
- airflow
- Today
- Total
IT 삽질기
Hadoop ZKFC(Zookeeper Failover Controller) 본문
지난 글에서 Hadoop NameNode(NN) HA가 무엇인지에 관한 내용과 HA를 구성하기 위한 요구사항들을 알아보았다
2021.04.08 - [BigData/Hadoop] - Hadoop2 NameNode HA QJM(Quorum Journal Manager)
오늘은 그 중 ZKFC에 대해서 좀 더 자세히 알아보도록 하자
지난 글에서 ZKFC는 active NN에 문제가 발생하는 경우 active를 내리고 standby상태에 있는 NN을 active로 전환시키는 역할을 한다고 했는데 그 과정이 어떻게 진행되는지와 다른 역할은 어떤 것이 있는지 설명한다
1. 상태 모니터링
ZKFC는 NN과 같은 호스트에 설치해 사용하게 되는데 local에 존재하는 NN에 계속해서 신호를 보내 정상 상태로 응답하는 경우 이를 정상이라고 간주하고, timeout 시간이 지나도록 응답이 없는 경우 이를 장애 상황으로 판단
2. ZooKeeper 세션 관리
local NN이 정상일 때 Zookeeper과의 세션을 유지하여 정상 상태임을 알 수 있는데, 세션이 만료되면(NN에 장애가 발생하면) 이를 끊어 Zookeeper 측에서도 장애를 감지할 수 있도록 하는 역할
3. Zookeeper 기반 선택
장애가 발생한 경우 Zookeeper을 기반으로 새로운 NN을 선택하고 선택된 NN이 active상태로 변경
4. Fencing
Fencing은 ZKFC에서 NN을 전환하는 과정에서 기존에 active로 동작하던 NN이 종료되지 않을 가능성을 생각해 active NN에 종료 명령을 내리는 것을 말하는데 확인 사살을 하는 느낌으로 두 개의 active NN이 올라오는 것을 방지하기 위한 기법이다
장애 상황 가정
이제 예를 들어 NN에 장애가 발생하는 상황에 대해서 살펴보도록 하자
여러 가지 장애의 상황들이 있지만 여기서는 NN에서의 응답시간이 초과한 상황을 가정한다
현재 상태는 아래와 같다
active NN - NN1
standby NN - NN2
1. ZKFC는 NN1, NN2와 같은 서버에서 NN의 상태를 지속적으로 모니터링한다
2. NN1에 어떤 문제가 발생해 ZKFC가 NN1의 상태 체크 timeout 발생
3. ZKFC는 이 경우 NN1의 상태를 standby상태로 변경하는 명령을 내린다(fencing)
4. NN2를 active로 전환
위의 과정이 일반적으로 일어나는 NN의 전환과정이다
만약 fencing이 없다고 생각해보자
NN1 서버에 일시적인 문제가 생겼고, NN2가 active상태로 전환되었는데,
NN1에서 발생한 문제가 해결되어 active NN이 2대가 되는 경우가 발생할 수 있어 오히려 장애로 번질 수 있는 상황으로 바뀌게 된다
참고자료
hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html
'BigData > Hadoop' 카테고리의 다른 글
Hadoop3 변경점 (0) | 2021.04.12 |
---|---|
Hadoop namenode.FSEditLog Error (2) | 2021.04.11 |
Hadoop2 NameNode HA QJM(Quorum Journal Manager) (0) | 2021.04.08 |
Hive 테이블 복사하기 (0) | 2021.04.07 |
HDP 3.1.4 Hive LLAP error(UnicodeDecodeError) (0) | 2021.04.05 |