[Hadoop] Hadoop 기본, NameNode 장애 대비책
NameNode
- DataNode 에 데이터 블록이 어디에 저장되어있는지, 복제본이 어떠한지 관리
DataNode
읽기가 발생하면?
- NameNode에 질의하여 파일을 요청
- NameNode가 응답하면 블록 검색을 위해 어떤 DataNode에 접근해야하는지를 알 수 있음
- DataNode에 접근하여 데이터 블록을 읽음
- 이 과정은 HDFS 클라이언트 API 를 통해 이루어짐.
- 어떤 데이터블록을 검색해야하는지
- 어떤 DataNode에 접근해야 보다 효율적인지
쓰기가 발생하면?
- ClientNode 는 NameNode에 질의
- NameNode는 새 항목을 만들고
- ClientNode는 단일 데이터 노드와 대화하여 데이터를 저장
- DataNode끼리 대화하여 여러 노드에 걸쳐 데이터 복제본을 저장
- 저장을 마치고 응답하면 ClientNode에서 파일 저장 및 서로 다른 복제본 저장을 확인
- NameNode는 새 파일이 복제 방식으로 저장되었음을 기록
NameNode에 장애가 발생하면?
- 단일 실패 지점 문제
- 지정된 시간에 하나의 네임노드만 활성화되는 것이 중요
- 그렇지 않으면 클라이언트가 서로 다른 블록이 저장된 위치에 동의하지 않을 수 있음
메타데이터를 지속적으로 백업
- 로컬 디스크와 다른 데이터센터의 NFS에 모두 작성
- NFS 백업에서 로그를 복원 가능
- 일부 정보는 잃을 수 있지만 가장 간단하고 다운타임이 짧음
SecondaryNameNode 사용
- 기본 NameNode 의 편집 로그(edit log) 의 복사본을 유지 관리함
- NameNode 자체인 것은 아님
- SecondaryNameNode 자체가 NameNode가 되지는 않음
HDFS Federation
- HDFS 파일 구조 내에 namespace volume 가 있고
- 각 NameNode가 별도의 네임 노드를 관리
- NameNode를 분산시키는 방법
- NameNode 장애가 일어나더라도 전체 HDFS 클러스터 다운 대신 일부 노드 복원 가능
HDFS High Availability(고가용성)
- 공유 편집로그 (shared edit log) 를 이용하는 Hot standby NameNode 를 실행
- Zookeeper 가 특정 시간에 어떤 NameNode가 활성 상태인지 추적
- 클라이언트에선 HDFS 요청 발생시 Zookeeper 에 질의
- 설정이 다소 복잡하고, 동시에 두개의 NameNode가 실행되어 실패하기도 함
HDFS 사용하기
UI
- Ambari 를 통해 GUI로 접근.
- 사용하기 쉬움
CLI
- Windows, Linux 각각 CLI 로 접근 가능
HTTP/HTTPS proxy
Java 인터페이스
- Java 코드 또는 타 언어 API를 통해 접근
NFS Gateway
- HDFS 자체를 NFS 처럼 마운트하여 일반적인 파일시스템처럼 사용할 수 있음
reference
- 글로벌 Best】 Hadoop : 최고의 하둡 실습으로 빅 데이터 길들이기! (한글 자막) 강의