nathan_H

HDFS란? (Hadoop File System) 본문

Big Data/Hadoop

HDFS란? (Hadoop File System)

nathan_H 2019. 6. 12. 17:53

 

앞서 글에 빅데이터에 강력한 기술인

하둡에 관해 간력하게 소개를 하였는데

 

그 가운데 오늘은 HDFS인 하둡 파일 시스템에

대해 좀 들여다 볼까 한다.

 

HDFS

HDFS는 말그대로

하둡이 실행되는 파일을 관리해주는 시스템이다.

 

 

그리고 크게 NameNode, DataNode로 구성되어져 있다.

 

 

HDFS 특징

 

HDFS의 특징으로 크게 4가지에 대해 간략하게 소개할까 한다.

 

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

- 데이터 파일 크기나 개별 장비의 파일 시스템 크기에 제한이 없음

 

2. 용량 확장성

- 데이터가 증가하면 노드를 추가로 처리가능

 

3. 높은 처리량 실현

- 데이터의 부분 수정 불가, 랜덤 접근 불가, 큰 블록 처리 -> 고속 처리로 이어짐.

 

4. 슬레이브 노드의 일부가 고장 나도 데이터 손실을 방지 가능

- 복수개의 노드에 데이터 복제 유지.

 

이러한 특징들이 있는데 간단하게 인지하고 

있으면 될거 같다.

 

 

HDFS 설계 목표

위에 HDFS의 특징들과 

이어지는 HDFS의 설계 목표에 대해 알아보자.

 

장애 복구

HDFS는 장애에 있어 상당히 유연한

대처가 이루어 져야 하는데

그래서 장애 복구를 할 수 있도록 설계가 되어져야 한다.

 

1) 디스크 오류로 인한 데이터 저장 실패 및 유실에 같은 장애를 빠른 시간에 감지 및 대처

 

2) 데이터를 저장하면 복제 데이터도 함께 저장해서 데이터 유실 방지.

 

3) 분산 간 서버 간 주기적인 상태 체크(Heart Beat)

 

 

스트리밍 방식의 데이터 접근

 

HDFS에 파일 저자 및 조회를 위해서는

스트리밍 방식으로 데이터에 접근하는 방식을 취해야 하기 때문에

HDFS은 스트리밍 방식의 데이터 접근을 목표로

설계 되어져 있고 뿐만 아니라

배치 작업과 높은 데이터 처리량을 위해서도

스트리밍 방식을 사용한다.

 

 

대용량 데이터 저장

하둡의 본질적인 목적인

대용량 데이터를 처리하기 위해

우선 대용량을 데이터를 저장하는 기능이 있어야 하는데

 

때문에 높은 데이터 전송 대역폭, 하나의 클러스터에서

수백 대의 노드를 지원한다.

 

그리고 하나의 인스턴스 에서 수백만 개 이상의 파일을 지원한다.

 

 

데이터 무결성

HDFS는 한번 저장한 데이터를 수정할 수 없고

읽기만 가능하기 때문에

파일 이동, 삭제, 복사할 수 있는 인터페이스만 제공이 되어지고

그래서 데이터에 대한 무결성을 가진다.

 

 

NameNode의 역활

HDFS의 중추라고 불리우는 NameNode는

HDFS에서 핵심적이고 중요한 역활을

하는데 이에 대해 좀 자세히 알아보자.

 

메타데이터 관리.

NameNode는 하둡에서 처리되는 

파일 속성 정보나 파일 시스템 정보를 

디스크가 아닌 메모리에서 직접 관리하는 역활을 한다.

 

이를 메타 데이터라고 말하며

앞서 말했듯이 디스크가 아닌 메모리를 통해

직접 관리하기 때문에 빠른 응답이 가능하다.

 

 

HDFS 사용 상황 관리.

NameNode는 DataNode와 주기적으로

상황을 주고 받으면서

DataNode의 용량이 다 차면 

다른 DataNode로 블록을 이동 가능하도록 만들어 준다.

 

그리고 블록 복제본 수도 관리한다.

(삭제 및 생성도 포함)

 

 

클라이언트의 HDFS 처리 요청 접수

 

NameNode는

클라이언트가 하둡이 어떻게 실행될지

처리에 대한 요청을 직접 접수하게 된다.

 

클라이언트가 HDFS에 대해 파일 접근을 요청을 하고

-> NameNode가 메타데이터를 바탕으로 대상 블록을 보유한

DataNode 리스트를 클라이언트에게 전달한다

->  이 리스트를 가지고 클라이언트는 해당 DataNode에 직접 통신을 하게 된다.

 

 

 

 

DataNode 다운 여부 감시

NameNode는 DataNode와 수시로 

통신을 주고 받는다고 앞서 이야기 했는데

이러한 주기적인 송신을 통해 

(HeartBeat)

DataNode의 다운 여부를 감시하고

데이터를 어떻게 처리 할지, 분배 할지 결정한다.

 

 

 

 

MetaData

 

NameNode가 metadata를 관리한다고 말했는데

그럼 과연 meta는 어떤 정보를 담고 있는 것일까?

 

1. 파일명

 

2. 디렉터리

 

3. 데이터 블록 크기

 

4. 소유자 : 소속 그룹

 

5. 파일 속성

 

6. DataNode와 블록 대응 정보.

- 블록 ID와 해당 블록을 보유한 DataNode 정보

- DataNode가 하트비트를 3초 간격으로 전송 할때,

자신이 관리하는 블록 정보를 통지(block report)

- 이를 바탕으,로 전체 블록 정보를 구축 및 복제수가 충분한지 판단. 

 

메타 데이터는 이렇게 6가지에 대한 정보가 담겨있다.

 

fsimage

메타 데이터에도 크게  fsimage와 edits로 구분할 수 있는데

그중에 fsimage는 앞서 메타 데이터가 가지고 있는 정보중

1~5번을 포함한 정보로써 

메모리 상에 관리되어 있는 메타데이터 내의 파일 시스템 이미지이다.

 

또한 체크 포인트라고 불리는 타이밍에 NameNode의 

로컬 파일 시스템에 생성되고 

DataNode에 블록정보는 포함되지 않는다.

 

 

edits

반면 edits는 파일 처리 시 

로컬 파일 시스템에 생성되는 편집로그로써

메모리 상에서 관리되고 있는 파일 시스템 이미지(fsimage)에 적용된다.

 

 

SecondaryNode

하둡의 NameNode가 고장이 났을시에

HDFS에 가지고 있던 모든 정보들이

날아갈 수 잇는 위험을 방지하기 위해

NameNode의 이중화(HA)을 통해 

이 문제를 방지한다고 했는데

그 방법이 바로 SecondaryNode을 구성하는 것이다.

 

SecondaryNode 구성

 

 

1) HA 클러스터 구성을 사용하지 않는 클러스터에서 사용.

 

2) 주기적으로  NameNode에서 fsimage와 edits를 받아서 이들을

합치고, HDFS에 대한 갱신 내용을 반영한 새로은 fsimage를 생성.

 

3) 생성한 fsimage를 NameNode로 전송

 

4) 체크 포인트를 실시하여 fsimage에 적용 완료한 edits를 

삭제함으로써 디스크 공간 절약

 

5) NameNode 재시작시 fsimage에 대한 edits 적용 크기를

줄일 수 있어서 재시작 시 시간 단축

 

6) NameNode 장애가 발생한 경우, 메타 데이터를 보존 함으로써

완전 데이터 손실을 방지.

 

 

source - https://netjs.blogspot.com/2018/02/namenode-datanode-and-secondary-namenode-hdfs-hadoop.html

 

 

 

 

'Big Data > Hadoop' 카테고리의 다른 글

MapReduce  (0) 2019.06.12
HDFS Architecture  (0) 2019.06.12
Hadoop 이란?  (0) 2019.06.12
Comments