HDFS 네임노드(NameNode) 및 데이터노드(DataNode)에 대한 상세 설명
문제
HDFS의 네임노드와 데이터노드 역할 및 아키텍처 구성에 대해 상세히 설명하시오.
답안
1. 개념
HDFS(Hadoop Distributed File System)는 마스터-슬레이브(master-slave) 구조를 가지며, 클러스터 내 네임노드(NameNode) 와 여러 대의 데이터노드(DataNode) 로 구성된다.
2. 역할 및 목적
- 네임노드(NameNode) :
- 파일 시스템의 네임스페이스(NameSpace)를 관리
- 파일 및 디렉터리의 생성, 삭제, 이름 변경 등 메타데이터 작업 수행
- 각 파일이 어떤 데이터노드에 저장된 블록(block)들로 구성되어 있는지에 대한 블록 매핑(block mapping) 정보 관리
- 클라이언트가 데이터에 접근할 때, 실제 데이터를 저장한 데이터노드를 안내
- 데이터노드(DataNode) :
- 네임노드가 지정한 대로 데이터를 블록 단위로 저장
- 클라이언트의 데이터 읽기/쓰기 요청 처리
- 블록 생성, 삭제 및 복제를 수행하여 데이터의 내결함성 보장
- 주기적으로 네임노드에 상태 보고(heartbeat) 및 블록 상태 보고(block report)
3. 아키텍처 구성
구성요소 | 역할 및 설명 |
---|
네임노드 (NameNode) | 클러스터의 마스터 노드 파일 시스템 네임스페이스 및 메타데이터 관리 파일 오픈/닫기, 이름 변경, 블록 위치 결정 |
데이터노드 (DataNode) | 클러스터 내 슬레이브 노드 실제 데이터 블록 저장 및 관리 클라이언트 요청 처리 및 블록 복제 수행 |
클라이언트 (Client) | HDFS에 파일을 쓰거나 읽는 사용자 네임노드에서 블록 위치 정보를 받아 데이터노드와 직접 통신 |
4. 원리
- 파일 분할과 저장: 파일은 여러 개 이상의 블록(block)으로 분할되어 저장된다. 기본 블록 크기는 128MB(하둡 2.x 이상)이며, 각 블록은 여러 데이터노드에 복제되어 저장된다.
- 메타데이터 관리: 네임노드는 파일과 디렉터리 구조, 블록과 데이터노드 간 매핑 정보를 메모리에 유지한다.
- 클라이언트 접근: 클라이언트가 파일 접근 시, 네임노드에 메타데이터 요청 → 네임노드는 해당 파일 블록이 저장된 데이터노드 위치를 응답 → 클라이언트가 직접 데이터노드에서 블록 읽기/쓰기 수행
- 데이터노드 상태 보고: 데이터노드는 네임노드에 정기적으로 하트비트(heartbeat) 및 블록 상태 보고(block report)를 보내 데이터 가용성을 알린다.
- 복제 및 장애 처리: 네임노드는 데이터노드 장애 시 복제본을 다른 데이터노드에 재생성하여 데이터 손실을 방지한다.
5. 핵심 용어 정리
용어 | 설명 |
---|
네임노드(NameNode) | 메타데이터 관리 및 클러스터 마스터 역할 수행 |
데이터노드(DataNode) | 실제 데이터 블록 저장 및 관리 |
블록(Block) | 파일을 분할한 기본 저장 단위 |
하트비트(Heartbeat) | 데이터노드 상태를 네임노드에 알리는 신호 |
블록 리포트(Block Report) | 데이터노드가 보유한 블록 목록을 네임노드에 보고 |
6. 특징
- 마스터-슬레이브 구조: 네임노드가 전체 시스템을 제어하는 중앙 관리자 역할, 데이터노드는 저장 및 처리 담당
- 분산 저장: 데이터는 여러 데이터노드에 분산 복제되어 저장, 데이터 안정성 및 고가용성 보장
- 클라이언트 직접 통신: 데이터 접근 시 클라이언트는 네임노드가 알려준 데이터노드와 직접 통신해 효율성 증대
- 내결함성: 데이터노드 장애 시 네임노드가 자동으로 데이터 복제 및 재배치 수행
요약
항목 | 네임노드(NameNode) | 데이터노드(DataNode) |
---|
역할 | 파일 시스템 메타데이터 및 네임스페이스 관리 | 실제 데이터 블록 저장 및 관리 |
작업 | 파일 열기/닫기, 이름 변경, 블록 위치 매핑 | 블록 생성, 삭제, 복제, 클라이언트 요청 처리 |
위치 | 클러스터 마스터 노드 | 클러스터 내 다수 존재 |
통신 대상 | 클라이언트, 데이터노드 | 네임노드, 클라이언트 |
상태 보고 | - | 네임노드에 하트비트 및 블록 리포트 전송 |