HDFS 네임노드(NameNode) 및 데이터노드(DataNode)에 대한 상세 설명

agnusdei·2025년 7월 18일
0

ICT

목록 보기
19/90

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)
역할파일 시스템 메타데이터 및 네임스페이스 관리실제 데이터 블록 저장 및 관리
작업파일 열기/닫기, 이름 변경, 블록 위치 매핑블록 생성, 삭제, 복제, 클라이언트 요청 처리
위치클러스터 마스터 노드클러스터 내 다수 존재
통신 대상클라이언트, 데이터노드네임노드, 클라이언트
상태 보고-네임노드에 하트비트 및 블록 리포트 전송

profile
DevSecOps ⚙️ + Pentest 🚩

0개의 댓글