728x90
반응형

HDFS 에 대해서 찾아보며 공부한 내용을 정리해보려고 한다.

 

HDFS(Hadoop Distributed File System)

옛날에는 한 대의 컴퓨터에 많은 데이터를 저장했고 큰 작업들을 수행했다. 하지만 데이터의 양이 점점 많아지면서 한 대의 컴퓨터에서 처리하기에는 필요한 비용이 기하급수적으로 늘었다고 한다. 그래서 구글에서 저사양의 컴퓨터를 여러 대 모아 한대의 컴퓨터처럼 동작하는 모델을 설계했고 바로 그 모델이 GFS(Google File System) 이라고 한다. HDFS 는 GFS 의 모델을 바탕으로 설계되었다고 한다.

 

HDFS 의 특징으로 저장된 파일은 데이터 무결성으로 수정이 불가능하다.
HDFS 는 한번 쓰고 여러번 읽는 목적에서 설계되었다고 한다.  읽기 중심의 파일시스템이라고 생각할 수 있다.
이후에 HDFS의 최신 버전에서는 기존의 파일에 추가할 수 있는 기능이 도입되었다고 한다.

 

그리고 많은 컴퓨터를 사용하게 되어 서버의 문제가 발생하는 빈도가 증가해 서버에 저장되는 데이터에 대한 문제가 생겼는데
이런 취약점을 보완하기 위해서 데이터를 담고 있는 block 의 복제 데이터인 replica 를 여러개 만들어서 다른 서버에 저장한다.
그럼 하나의 서버에 문제가 발생하더라도 다른 서버를 통해서 데이터를 사용할 수 있다.

 

 

HDFS 특징

지금까지 정리한 HDFS 의 특징으로는 다음과 같다.

 

1. 대용량 데이터를 범용 서버로만 처리가 가능하다.

이 말은 저사양의 컴퓨터 여러 대로 하나의 파일시스템으로 구성해서 대용량의 처리가 가능하다는 말이다.

 

2. 용량 확장성

데이터가 증가하면 Data Node 를 추가해 처리가 가능하다.
한대의 Name Node 에 여러 대의 Data Node 가 연결되어 있어 대용량 데이터를 분산 처리 후 저장하게 되는데
Data Node 의 용량이 부족해 저장 공간이 부족하다면 Data Node 를 추가할 수 있다.

 

3. 높은 처리량

데이터를 한번 저장하면 수정할 수 없고 블록으로 데이터를 저장해 처리 속도가 매우 빠르다.

 

4. 데이터 손실을 줄여준다.

Data Node 의 데이터를 Block 이란 단위로 쪼개어 저장하고 Block 의 Replica 를 생성해 여러 대의 Data Node 에 저장하기 때문에 데이터가 손실되어도 복구가 가능하다는 점이다.

 

 

 

HDFS 는 Name Node 와 Data Node 로 구성된다.

Name Node

HDFS 에 저장되는 데이터들의 메타데이터를 가지고 있다. 따라서 HDFS 에 데이터를 저장하거나 가져올 때 Name Node 의 메타데이터를 통해 Data Node 에 접근해서 데이터를 가져온다. 클라이언트의 요청을 받아 데이터를 저장하거나 읽어오는 역할을 수행한다.

 

그렇게 되면 하나의 Name Node 에 여러 대의 Data Node 가 있게 되고 Name Node 에 장애가 발생하면 데이터의 읽기 쓰기가 불가능해져 SPOF 의 문제가 발생하기 때문에 HA 구성을 통해 Failover 가 이루어질 수 있도록 Name Node 를 구성하게 되어있다.

 

* SPOF (Single Point Of Failure)
단일 장애점을 뜻하는 단어로 어느 한 요소에서 문제가 발생했을 때 시스템 전체에 문제가 발생하는 구조를 말한다.
* HA (High Availability)
고가용성이라는 뜻으로, 시스템에 어떤 문제가 발생하더라도 정상 작동할 수 있는 것을 말한다.
* Failover
하나의 시스템에 장애가 발생했을 때 예비 시스템으로 작동할 수 있게 하는 기능을 말한다.
Failover 가 되면서 모든 컨트롤이 Standby 의 서버로 이전되어 Standby 의 상태에서 Active 상태가 되어 끊김없이 동작하도록 한다.
물론 Failover 가 진행되는 동안에는 약간의 시간이 필요하다.

 

 

Data Node

HDFS 에 저장되는 데이터들은 블럭(Block) 이라는 단위로 쪼개져서 모두 서로 다른 Data Node 에 저장된다.
블럭은 초기에 64MB 의 크기를 가지고 있었지만 최근에는 최대 128MB 까지의 크기를 가진다고 한다.
여러 대의 서버로 이루어져있다.

 

Data Node 는 Name Node 와 지속적인 Heart beat 를 보내면서 여러가지 정보를 주고 받고 Name Node 는 이러한 정보를 지속적으로 받으면서 모니터링을 진행한다고 한다.
만약 하나의 Data Node 에 10분 동안 Heart Beat 의 정보를 받지 못한다면 Data Node 의 서비스가 중단된 것으로 판단해 해당 서버의 데이터들을 새로 생성해서 다른 Data Node 에 저장한다고 한다.

 

 

HDFS 의 데이터 읽어오기

HDFS 가 파일을 읽을 때에는 클라이언트에서 Name Node 에게 데이터의 위치를 물어본다.
그러면 Name Node 는 데이터의 메타데이터를 가지고 Data Node 의 위치를 가져온다.
그럼 Data Node 의 위치를 가져와 Data Node 에 있는 데이터를 읽어올 수 있다.

 

 

HDFS 에 데이터 저장하기

HDFS 에 파일을 저장할 때에는 클라이언트에서 Name Node 에게 파일을 저장할 Data Node 의 위치를 물어본다.
그럼 Name Node 는 Data Node 의 리스트를 클라리언트에게 알려주게 된다.
클라이언트가 데이터를 block 단위로 저장하면 Data Node 의 리스트가 파이프라인을 생성하며 순차적으로 block 들의 replica 를 생성해서 저장하게 된다.

 

 

 

이렇게 하둡의 구성 요소인 HDFS 에 대해서 공부해보고 정리해봤다.
아직도 잘 이해가 안가는 부분도 있고 설명하기에 부족한 부분도 있기 때문에 계속해서 공부하면서 다듬어나가야겠다.

 

 

- 참고 사이트

https://taaewoo.tistory.com/15

 

[Hadoop] HDFS - The Hadoop Distributed File System

HDFS란? 하둡 분산 파일 시스템 (Hadoop Distributed File System)으로써 대용량 데이터 사용 및 관리를 효율적으로 하기 위해 설계한 파일 시스템. 이번 글부터는 Hadoop Component들을 하나씩 소개해드릴 예정

taaewoo.tistory.com

 

 

728x90
반응형
복사했습니다!