빅데이터/Hadoop

Hadoop HA 아키텍처

min_min_ 2022. 9. 21. 14:19

NN, JournalNode

하둡은 HA는 NN이 하나가 아닌 Standby NN이 같이 있어서 Zookeeper가 모니터링 하고 있다가 ZKFC통해서 standby를 active로 승격시키는 구조로 이루어집니다. 

Active NN과 Standby NN은 Journal node를 통해서 트랜잭션 내역을 공유합니다. Active만 Journal node에 있는 edits log(로컬 디스크에 저장)에 대한 write 권한이 있습니다. 그러면 QJM을 통해서 Journal node 전체에 해당 내역을 쓰고, Standby NN은 해당내역을 반영시킵니다. 그리고 edits log를 주기적으로 fsimage에 병합(merge)시킵니다. 해당 작업은 CPU와 IO가 많이 필요해서 별도의 노드에서 수행하고 다시 NN에 보내주는 역할을합니다. 주기적으로 fsimage와 edits log를 폴링하여 백업하고 수행합니다.(secondary node 역할) fsimage는 메타데이터의 영속적인 체크포인트이자 스탭샷으로 HDFS전체 메타데이터를 disk에 저장한 것입니다. 그래서 NN이 오류났을 때, fsimage와 edits log만 있으면 해당 기록들을 메모리 상에 올려 Hadoop을 복구할 수 있습니다. 주기적으로 체크포인팅을 하는 이유는 NN 재시작 시, fsimage을 로딩하고 edits log를 반영하는데 그러면 시간이 너무 오래 걸려서 그렇습니다.

추가로 edits log 작성 후 NN은 메모리 상에 상주하는 메타데이터를 변경합니다.  

 

ZKFC

주키퍼 장애 복구 컨트롤러로 주키퍼 client로 동작됩니다. NN의 상태를 모니터링 하다가, active가 에러 시 standby를 active로 승격시키고, 기존의 active는 제거하여, 단 하나의 NN만 active인 것을 보장합니다.

 

Standby NN vs Secondary NN

Standby NN : active 가 될 수 있고, 메타데이터를 메모리에 저장해둔다.

Secondary NN : fsimage을 merge하고 다시 NN에 fsimage를 보내는 역할을 합니다.

 

 

Reference

https://eyeballs.tistory.com/255

 

[Hadoop] edit log 와 fsimage

공부하는 내용을 적은 거라 내용이 틀릴 수 있습니다. Name Node 가 HDFS 의 메타 데이터(블록 크기, 디렉토리명, 파일명, 상태정보, 접근 권한, 복제 수준, 변경 및 접근 시간 등)를 관리하기 위해 사

eyeballs.tistory.com

https://eyeballs.tistory.com/251?category=748860 

https://blog.geunho.dev/posts/hadoop-namenode/

 

[Hadoop] 고가용성(HA) 설명과 주키퍼 동작 방법

하둡2부터는 High Availability (이하 HA)라는 용어를 사용합니다. High Availability란 하나의 네임노드와 보조네임노드를 설정하는것이 아닌, 두 개의 네임노드를 설정하는 방법입니다. NameNode 에 장애가.

eyeballs.tistory.com

https://it-sunny-333.tistory.com/42?category=363857