본문 바로가기

빅데이터

HDFS(Hadoop Distributed File System) 아키텍쳐 개요 및 설명

Introduction

HDFS(Hadoop Distributed File System)는 분산 파일시스템을 하드웨어에 저장하고, 읽는 역할을 한다. 여타 다른 분산 파일 시스템과 비슷해 보이지만, HDFS는 아래와 같은 특징을 가진다.


# Highly fault-tolerant

# Deployed on low-cost hardware


상기와 같은 두개의 장점으로 인해 HDFS는 대용량 데이터에 대해 저장 및 조회 용으로 적절하게 사용 가능하다.


HDFS의 Goal

Hardware Failure

1개의 node가 365일 중 하루동안 고장이 난다고 가정하자, HDFS의 data node가 1000대라면, 확률적으로 하루에 3대가 고장난다. HDFS는 이러한 물리적 고장에 대해서 신속한 detection과 automatic recovery에 대해 대처가능한 아키텍쳐이다.

Streaming Data Access
기존의 일반적인 파일시스템과 다른 목적을 가지는 HDFS는 사용자가 실시간으로 사용하기 보다는 배치처리를 위해 설계되었다. 또한 데이터 엑세스의 high throughput에 중점을 둔다.


Large Data Sets

HDFS에 저장되는 파일은 gigabyte ~ terabyte까지의 사이즈를 가진다. HDFS는 이러한 환경에서 단일 클러스터에서 high data bandwidth와 hundreds of nodes의 스케일링을 지원한다.


Simple Coherency Model

HDFS는 한번읽고 여러번 access하는 모델을 지향한다. 파일이 한번 create되고 written되면, 그 이후 update는 append 혹은 truncate만 가능하다. 이러한 특징을 통해 파일의 high throughput에 집중가능하다. MapReduce application이나 web crawler application이 이러한 파일 모델에 적합하다.


"Moving Computation is Cheaper than Moving Data"

HDFS는 한정적인 network에 대해 대용량 데이터을 효과적으로 처리하기 위해 만들어진 아키텍쳐이다. 물리적으로 멀리 떨어진 곳에 데이터를 분산 저장하기 보다는, 가까운 곳(closest rack) 에 저장함으로서 network를 효과적으로 사용한다.


Portability Across Heterogeneous Hardware and Software Platforms

HDFS는 한 플랫폼에서 다른 플랫폼으로 쉽게 옮길 수 있도록 설계되었다. 이를 통해 HDFS를 다양한 응용프로그램에 적합한 플랫폼으로 널리 채택 가능하다.


NameNode와 DataNode

DataNode : 실질적인 데이터를 분산 저장하는 node, Rack단위로 나뉘어진다.

NameNode : 각 분산된 데이터에 대해서 어느 DataNode에 저장되었는지 memory에 저장하고 있다.


그림. HDFS 아키텍쳐 구성도


1. Client는 특정 파일에 대해 NameNode에게 질의한다. 

 2. NameNode는 특정 파일의 block의 메타정보(파일명, 사용권한 등)를 메모리에서 가져와, client로 보낸다.

 3. Client는 NameNode로 부터 받은 메타정보를 토대로 병렬로 직접 DataNode에서 file을 read한다.


End of Document.