본문 바로가기
IT/하둡

HDFS(Hadoop Distributed File System) 아키텍처

by 최고영회 2014. 3. 5.
728x90
반응형
SMALL

HDFS은 블록 구조의 파일 시스템이다.

블록 사이즈는 기본 64MB 로 설정 되어 있으며 HDFS 에 저장되는 파일은 블록으로 나눠져서 분산 서버에 저장된다.

이렇게 분산된 서버에 나눠서 데이터를 저장하기 때문에 로컬 서버의 하드디스크보다 큰 사이즈의 데이터를 저장할 수 있는 것이고,

저장할 수 있는 용량을 수십기가, 테라, 페타바이트까지 확대할 수 있다.


HDFS의 파일 복제 구조

HDFS은 블록을 저장할 때 기본적으로 3개씩 복제본을 저장한다. (설정 가능) 특정 서버의 하드디스크의 오류가 생기더라도 복제된 블록을 이용하여 

데이터를 조회 할수 있다.


HDFS 에 저장되는 디렉토리, 파일명과 같은 네임스페이스 그리고 해당 파일의 복제본 수와 블록의 위치도 네임노드의 메타데이터에 저장된다. 

데이터노드는 주기적으로 네임노드에게 heartbeat와 블록의 목록이 저장된 blockreport를 보낸다. 

네임노드는 heartbeat로 정상 작동 여부를 확인하고 blockreport를 통해 데이터노드의 모든 블록을 확인하고 파일의 복제본 위치를 결정한다.

네임노드는 HDFS client 에게 직접 파일을 전송하지도, client가 HDFS에 저장하는 파일을 데이터노드에 직접 전송하지도 않는다.


보조 네임 노드

네임노드는 HDFS의 메타데이터를 관리하기 위해 EditLog와 FsImage 파일을 사용한다.

EditLog : HDFS의 메타데이터에 대한 모든 변화를 기록하는 로그 파일

FsImage : 파일 시스템의 네임스페이스(디렉토리명, 파일명, 상태 정보)와 파일에 대한 블록 매핑 정보 저장 파일

EditLog 파일은 사이즈에 제한이 없이 커질 수 있다. 때문에 EditLog 의 내용을 토대로 메모리에 올라와 있는 파일 시스템 이미지 갱신시 시간이 많이 소요

될 수 있다. 또한 FsImage 파일을 파일에 변경이 있을 때마다 갱신하면 FsImage 파일은 GB 이상으로 커지게 되며 메모리에 로딩하지 못하는 사태가

일어날 수도 있다.

이러한 문제점을 해결하기 위해 HDFS는 보조 네임노드(Secondary Name Node)라는 노드를 사용한다.

보조네임노드는 네임노드의 백업 노드, 백업서버가 아니다. 보조네임노드는 네임노드의 FsImage 를 축소시켜주는 역할을 담당하는 서버이다.


728x90
반응형
LIST

'IT > 하둡' 카테고리의 다른 글

HDFS(Hadoop Distributed File System) 기초  (0) 2014.03.04
Hadoop Test (STS + Maven)  (0) 2014.03.04
Haddop 설치  (0) 2014.03.04
Hadoop Echosystem  (0) 2014.03.04
Hadoop(하둡)  (0) 2014.03.04