본문 바로가기

data engineering

Hadoop의 개요 #3 - HDFS 아키텍처

HDFS는 마스터(Master)와 슬레이브(Slave) 구조로 이루어져 있다. 

마스터-슬레이브 구조는 1개의 하드웨어(마스터)가 1개 이상인 다른 기기(슬레이브)를 제어하는 형태이다. 

마스터 역할을 수행하는 서버를 네임노드라고 하고 슬레이브 역할을 수행하는 서버를 데이터노드라고 한다. 

아래는 각 역할에 대해 간략하게 정리한 것이다. 

 

 

 

1) 네임노드 역할

메타 데이터(파일 시스템이미지+파일 블록매핑정보) 관리

- 파일 시스템 이미지: 파일명, 디렉터리, 크기, 권한

- 메모리에 저장된 메타데이터의 파일 시스템 이미지를 저장한 파일(스냅샷)

- 파일에 대한 블록 매핑 정보: 어떤 블록이 어느 데이터노드에 저장되어있는 지

- 메모리 전체에 메타데이터를 로딩

데이터 노드 모니터링

- 데이터 노드가 3초마다 보내는 하트비트(heartbeat)를 네임노드가 받음

- 하트비트로 네임노드는 데이터 노드의 실행상태와 용량 체크

- 하트비트 전송 X -> 장애 감지

블록관리

- 장애가 발생한 데이터 노드의 블록들을 새로운 데이터 노드로 복제

- 용량이 부족한 데이터 노드가 있으면 여유있는 데이터 노드로 블록 이동

- 정해진 복제본 수와 일치하지 않는 블록의 복제본 삭제 혹은 복제

클라이언트 요청 접수

 

2) 데이터노드 역할

클라이언트가 HDFS에 저장하려는 데이터를 로컬디스크에 유지(DISK)

- 메타데이터: 체크섬, 파일 생성 일자

- 로우데이터 : 실제 데이터가 저장

 

3) 네임노드의 약점(Hadoop 1.x)

- 네임노드는 메모리에 파일 시스템 메타 데이터를 관리

- 서버가 꺼지면 파일 시스템 메타 데이터는 사라짐

- 서버를 다시 켜도 파일 시스템 메타 데이터를 관리하기 위해 네임노드에는 editslogfsimage라는 파일을 저장

- 에디트 로그(editslog): HDFS의 모든 변경이력이 담겨 있음 HDFS에 저장된 파일을 수정하면 네임노드에 에디트 로그 만들어짐

- Fsimage : ‘파일 시스템 메타 데이터의 스냅샷

- 네임노드가 시작이 되면 Fsimage를 메모리로 로딩

- Fsimage는 에디트로그를 반영함

- 에디트 로그가 너무 커져버리면 Fsimage 파일을 메모리로 로딩하는 시간이 느려짐

 

4) 보조 네임노드 역할

- 하둡 1.0 버전에서 주로 사용됨(네임노드가 오로지 하나만 작동 될 때 사용)

- 주기적으로(한시간 마다) Fsimage를 갱신하는 역할을 함(체크포인트라고도 함)