GiYeong

HDFS(Hadoop Distributed File System) 본문

Hadoop

HDFS(Hadoop Distributed File System)

gy2710 2022. 9. 8. 14:04

HDFS

  • Hadoop의 저장소 (하둡의 계산 -> MapReduce)
  • Hadoop Network에 연결된 기기에 데이터를 저장하는 분산형 파일 시스템이다.
  • 여러 머신에 대용량의 파일들을 나눠서 저장(분산처리)한다. 이를 통해 한 서버에 오류가 발생하더라도 다른 서버에서 복구할 수 있다. (데이터 안정성)
분산형 파일 시스템 분산처리 시스템
여러 대의 머신이 데이터를 처리
일부 머신에 오류가 발생하더라도, 다른 머신에서 데이터를 접근할 수 있다. 일부 머신에 오류가 발생할 경우, 시스템이 동작하지 않음
인터페이스가 복잡하여 프로그래밍이 힘듦

 

  • Hadoop Application은 HDFS에 파일을 저장하거나, 저장된 파일을 읽기 위해 HDFS Client를 이용하며, Client는 API의 형태로 제공된다.
  • Client는 NameNode에 접속해서 원하는 파일이 저장된 Block의 위치를 확인
  • Client가 NameNode를 통해 원하는 파일이 저장된 Block의 위치를 확인한 후, DataNode와 직접 통신하여 파일을 읽거나 쓴다.

 

특징

  • 파일을 Block 단위로 나눠서 저장
  • Block을 다중 노드에 분산해서 저장
  • 하나의 Block을 여러 노드에 복제
  • 다수의 노드에 복제 데이터도 저장함으로서 데이터의 유실을 방지
  • 한번 저장한 데이터는 수정되지 않음(Read Only,, 데이터의 무결성 유지)

구조

  • Master / Slave 구조
    • HDFS의 Master : NameNode (1대)
    • HDFS의 Slave : DataNode (여러 대)
  • 저장하는 파일은 특정 사이즈의 Block으로 나눠 분산된 서버에 저장됨
  • 하나의 Block은 3개로 복제되며, 각각 다른 HDFS의 Node에 분산 저장됨

HDFS 클러스터

  • 하나의 NameNode & FileSystem을 관리
  • 클라이언트의 접근을 통제하는 Master Server로 구성
  • 클러스터의 각 노드들에는 DataNode가 하나씩 존재, 해당 DataNode는 실행될 때 마다 Node에 추가되는 스토리지를 관리
  • HDFS는 네임스페이스를 공개해서 유저 데이터가 파일에 저장되는 것을 허용Na

NameNode

  • HDFS의 모든 메타데이터(Block들이 저장되는 디렉토리의 이름, 파일명 등)을 관리
  • 클라이언트는 메타데이터를 이용하여 HDFS에 저장된 파일에 접근 가능
  • 파일과 디렉토리의 open, close, rename 등 여러 기능을 수행
  • DataNode와 Block들의 매핑을 결정

Secondary NameNode (체크포인팅 서버)

  • 주기적으로 NameNode의 파일 시스템 이미지 파일을 갱신 (이를 체크포인트라고 함)
  • NameNode의 Block 정보를 합칠 때 사용하기 위한 Node이지, NameNode의 백업 Node는 아니다.

 

DataNode

  • 파일과 디렉토리의 read, write 기능을 수행
  • 클러스터가 처음 시작될 때, 각 DataNode는 자신의 Block 정보를 NameNode에게 알려준다.
  • 주기적으로 NameNode에게 Heartbeat(디스크 가용 공간 정보, 데이터 이동 및 적재량 정보 등)와 Block 목록이 저장된 Block report를 보낸다.
  • 자신의 디스크에 변경사항에 발생할 때마다, NameNode에게 변경사항을 알려준다.

JobTracker

  • TaskTracker의 리소스 사용가능 여부, 얼마나 사용되고 있는지 등을 관리하는 리소스 관리 기능 수행
  • 일반적으로 Master Node(NameNode가 설치된 Node)에서 실행한다.

TaskTracker

  • Task를 실제로 처리
  • DataNode에는 하나의 TaskTracker만 존재
  • 동시에 여러 개의 Task를 수행 가능
  • 장애가 발생한 TaskTracker의 작업은 다른 TaskTracker에게 재할당
Comments