IT 삽질기

Hadoop ZKFC(Zookeeper Failover Controller) 본문

BigData/Hadoop

Hadoop ZKFC(Zookeeper Failover Controller)

화이팅빌런 2021. 4. 10. 23:49

지난 글에서 Hadoop NameNode(NN) HA가 무엇인지에 관한 내용과 HA를 구성하기 위한 요구사항들을 알아보았다

2021.04.08 - [BigData/Hadoop] - Hadoop2 NameNode HA QJM(Quorum Journal Manager)

 

Hadoop2 NameNode HA QJM(Quorum Journal Manager)

Hadoop2 NameNode(NN)에서 제공하는 HA기능에 대해서 알아보도록 하자 Hadoop NN을 HA로 구성하는 방법은 2가지로 QJM(Quorum Journal Manager)방식과 NFS를 이용하는 방식이 있는데 여기서는 QJM 방식에 대해서..

dydwnsekd.tistory.com

 

오늘은 그 중 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

zkfc-design.pdf
0.24MB

 

'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
Comments