[Hadoop] HDFS 기본 특징와 노드 종류
DB(DataBase)

[Hadoop] HDFS 기본 특징와 노드 종류

728x90

하둡 HDHS

HDFS는 Hadoop Distributed File Syste으로, 대용량 데이터를 분산된 서버에 저장하고, 데이터를 빠르게 처리할 수 있게 하는 파일시스템이다.

HDFS는 구글 파일 시스템을 본떠 만든 오픈소스로, 다음과 같은 특징을 갖고 있다

  • 큰 용량의 데이터 저장 가능
    • 데이터 저장 시 블록 단위로 쪼개어 저장을 진행해 여러 장비에 걸쳐 데이터를 저장할 수 있다.
  • 스트리밍 방식의 데이터 사용
    • HDFS로 저장된 데이터는 수정이 불가능 합니다.(단, 마지막 데이터에 추가로 데이터를 이어 붙이는 것은 가능함(append))
  • 일반적 하드웨어 사용 가능
  • 파일 블록 형태의 저장
    • 기본적인 블록의 크기는 128MB이며, 데이터 크기가 큰 경우 많은 블록을 띄우는 것을 방지하기 위해 크기를 키우기도 한다. (최대 512YB까지 지원)
    • 데이터 크기가 블록 크기보다 작을 경우, 저장 파일 만큼만 디스크를 사용해 불필요한 공간 활용이 없다.
    • 보통은 3개의 복제본을 생성해 서로 다른 장비에 분산 저장하는 경우가 많다.

노드 종류 

 HDFS는 Name Node(master) Data Node(worker)로 구성되어 있다.

https://wikidocs.net/23582

  • Name Node 기능
    • 메타 데이터 관리 : 파일 시스템 트리와 그 트리에 포함된 모든 파일, 디렉터리에 대한 메타 데이터(namespace image, edit log) 유지
    • Data Node 모니터링 : Data Node가 3초마다 보내는 상태, 용량(heartbeat)을 체크래 장애 서버 여부 판단
    • 블록관리 : 장애가 발생한 데이터노드의 블록을 새로운 Data node에 복제
    • 클라이언트 요청접수 : 클라이언트 접근 시 기존 파일 저장 여부, 권한 확인의 절차를 거쳐 저장을 승인
  • Data Node 기능
    • 클라이언트가 저장하는 파일을 로컬 디스크에 유지(raw data, meta data 2가지 저장)
    • Name Node에 주기적으로 상태정보와 블록 위치정보를 전달(heartbeat)

이 처럼 Name Node에는 Data Node에 대한 정보를 갖고 있으며, Data Node는 실질적인 데이터 저장을 한다.

Data Node에 데이터가 저장되어 있으나, Name Node가 손상된 경우, 가지고 있는 데이터를 읽어오거나 복구 할 수 없다.

HDFS에서는 위의 이유 때문에 Name Node에 대해 HA(High Availability)를 지원한다.

이런 전환 방식은 Controller 을 사용하여 관리하게 되는데, 일반적으로 Zookeeper 을 통해 구현된다.

파일 접근

HDFS을 통해서 파일에 접근하는 방법은 아래와 같다

  1. Client에서 Name Node에 block 위치를 요청
  2. Name Node로부터 반환된 위치에 해당하는 Data Node에서 read
  3. 만일 해당 Data Node의 상태가 정상이 아니면, Name Node에 알린 후 다른 블록에서 read

WRITE 과정은 다음과 같다.

  1. Client에서 Name Node로 create 시도
  2. Data Node에서 사용할 Block Node 목록을 반환하면, 해당 Data Node에 파일 쓰기 요청
  3. Data Node 간 복제 진행

reference

- https://wikidocs.net/23582

728x90