새소식

Data Engineering/Hadoop

Hadoop의 High Availability (고가용성) 아키텍처

  • -

Name node의 HA

하둡의 버전 1까지는 namenode는 SPOF(Single Point Of Failure)였다.
datanode는 수평적 확장이 가능했지만, namenode는 하나의 인스턴스를 유지해야했으며 이 namenode가 이용불가능 해지면 클러스터 전체가 이용 불가하다.

HA Architecture

위의 그림처럼 Active, Stanby 2개의 상태 namenode를 두어서 SPOF 문제를 해결했다.

active namenode가 다운되면, standby namenode가 승격되어 downtime을 최소화한다.
또한 stanby namenode는 backup namenode 역할도 수행한다.
이처럼 namenode가 예상치 못한 장애에 대해서 자동화된 failover를 수행할 수 있으며 maintenance 작업에서 graceful failover를 기대할 수 있다.

이 2개의 Name node로 consistency를 유지하기 위해서 2가지 이슈가 있다.

1. Active Standby는 항상 서로 sync
2. 어느 순간에도 항상 단 하나의 active namenode만 존재
잠깐이라도 2개가 존재하면 split-brain 문제가 생긴다. 이 split-brain을 막는 것을 fencing이라고 한다.

Active/Stanby namenode로 High Availability Architecture를 구현하는 2가지 방법이 있다.

1. Quorum Journal Node를 이용한 HA Architecture

Sync mechanism

Journal Node라는 별도의 노드 그룹/데몬 프로세스 로 sync를 서로 유지한다.

ring topology라는 구성으로 서로 원을 이루듯이 연결되어 있으며
이 ring 구조를 따라 계속해서 다른 노드로 copy한다.

Active namenode는 Journal node에 있는 Edit Logs를 업데이트한다.
Stanby namenode는 Journal node로부터 Edit Logs의 변경사항을 읽고 자신의 노드에 적용하여 sync 상태를 유지한다.

Failover 할 때는 Stanby가 Active로 되기 전에 자신의 메타데이터 내용이 Journal node 와 sync되었는지 확인하고 Active가 된다.

Datanode는 자신의 heart beat를 active, standby 모두에게 보내기 때문에 빠르게 failover를 할 수 있다.

Fencing - split brain 막기

Journal node는 한 순간에 하나의 namenode만 writer가 되게한다.
Standby가 Journal node에 대한 writing 권한을 받으면, 다른 namenode가 active 상태가 되지 못하게 막는다.
이후 active namenode가 되어 역할을 수행한다.

2. Shared Storage를 이용한 HA Architecture

Sync mechanism

shared storage device를 이용하여 sync를 유지한다.
active namenode는 변경사항을 shared storage에 있는 Edit logs에 기록한다.
standby namenode는 Edit logs에서 변경사항을 읽고 자신의 namespace에 적용한다.

Failover 할 때는 standby namenode가 shared storage의 edit logs의 변경사항을 모두 반영했는지 확인하고 active namenode가 된다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.