High Availability란 하나의 네임노드와 보조네임노드를 설정하는것이 아닌, 두 개의 네임노드를 설정하는 방법이다.
고가용성의 등장배경과 필요성:
하둡1에서의 HDFS(Hadoop Distributed FileSystem)는 네임노드 메타데이터를 다수의 파일시스템에 복제하는 방식, 보조 네임노드를 사용하여 체크포인트를 생성하는 방식으로 데이터의 손실을 방지하지만, 파일시스템의 고가용성을 궁극적으로 지원하지는 않는다.
이는 네임노드가 여전히 단일 고장점(SPOF:Single Point Of Failure)이기 때문이다. 네임노드에 장애가 발생하면 맵리듀스 잡을 포함, 모든 클라이언트가 파일의 읽기, 쓰기, 조회가 모두 불가능해진다. 이는 네임노드는 메타데이터와 파일 블록의 매핑 정보를 보관하는 유일한 저장소이기 때문이다. (= 네임노드의 이중화 필요)
HDFS는 네임노드가 단일 실패 지점이다. 즉 네임노드에 문제가 발생하면 모든 작업이 중지되고, 파일을 읽거나 쓸수 없게 된다는 의미다. 하둡 v2에서 이 문제를 해결하기 위해서 HDFS 고가용성(High Availability)을 제공한다.
HDFS 고가용성은 이중화된 두대의 서버인 액티브(active) 네임노드와 스탠바이(standby) 네임노드를 이용하여 지원한다. 액티브 네임노드와 스탠바이 네임노드는 데이터 노드로부터 블록 리포트와 하트비트를 모두 받아서 동일한 메타데이터를 유지하고, 공유 스토리지를 이용하여 에디트파일을 공유한다.
액티브 네임노드는 네임노드의 역활을 수행하고, 스탠바이 네임노드는 액티브 네임노드와 동일한 메타데이터 정보를 유지하다가, 액티브 네임노드에 문제가 발생하면 스탠바이 네임노드가 액티브 네임노드로 동작하게 된다. 액티브 네임노드에 문제가 발생하는 것을 자동으로 확인하는 것이 어렵기 때문에 보통 주키퍼를 이용하여 장애 발생시 자동으로 변경될 수 있도록 한다.
스탠바이 네임노드는 세컨더리 네임노드의 역할을 동일하게 수행한다. 따라서 HDFS를 고가용성 모드로 설정하였을 때는 세컨더리 네임노드를 실행하지 않아도 된다. 고가용성 모드에서 세컨더리 네임노드를 실행하면 오류가 발생한다.
참고