HDFS 1.0

- NameNode가 모든것을 관리하기 때문에 이것이 SPOF
- 즉, NamdNode가 죽으면 시스템 전체가 Downe됨.
HDFS 2.0
- HDFS 1.0의 단점을 보안하기 위해 고가용성의 2가지 방식을 구현
- NFS 방식, QJM 방식
NFS 방식

특징
- Network File System
- NameNode가 가진 정보들을 Active, Standby를 공유 스토리지를 활용해서 공유함. ( Shared edit logs)
- 공유 스토리리지에 edit logs를 공유하고 펜싱을 이용하여 하나의 네임 노드만 기록
단점
- split Brain
- git 충돌 처럼 뭐가 충돌이 발생하면 뭐가 맞는지 알수가 없음.
- 동시에 Shared Storage에 데이터를 수정할 때
- Shared Storage에 문제가 생기면 SPOF
QJM 방식

특징
- Quroum Journal Manager
- 주키퍼를 사용
- NameNode의 Active와 Standby를 관리해주는 것이 주키퍼.
- 2.0 넘어가면서 주키퍼 통신을 위한 Journal Nodes를 만들어서 거기에 저장
- Journal Node도 각각 서버에 구성
- 일반적으로 이 방식을 활용함.
- 전체 분산 환경에서 SPOF를 없애기 위해서는 절대 장애가 나지 않는 것이 필요한데, 이를 주키퍼로 활용함
주키퍼
- ZooKeeper
- 하둡에서만 사용되는 것이 아니라 여러개의 데몬이 구동되는 많은 플랫폼에서 함께 작동함
- 카프카, 스파크 등등 주키퍼와의 통신으로 SPOF를 없애는 아키텍쳐가 존재함
- 요즘은 이 의존성을 많이 걷어내고 있음.