반응형

하둡의 주요 구성 중 핵심 프레임워크 중 하나인 HDFS에 대해 알아본다.

하둡이란?

developer-woong.tistory.com/7

 

(하둡완벽설치!)ep02_하둡에코시스템(Hadoop EcoSystem)

하둡의 역사에 대해 궁금하다면?! developer-woong.tistory.com/6 (하둡완벽설치!) ep01_하둡(Hadoop)의 역사, 등장 배경 데이터 시대 2013, 2014년 기준으로 뉴욕증권거래소에서는 하루 4.5테라바이트의 데이터

developer-woong.tistory.com

 

분산 파일 시스템:

데이터가 단일 물리 머신의 저장용량을 초과하게 되면 전체 데이터셋을 분리된 여러 머신에 나눠서 저장할 필요가 있다. 이에 네트워크로 연결된 여러 머신의 스토리지를 관리하는 파일시스템을 분산 파일 시스템이라한다.

 

하둡은 HDFS라는 분산 파일 시스템을 제공한다.

 

(* 본 내용은 하둡 1버전에서의 HDFS구조에 관한 설명이다. 하둡 2.x 릴리즈 버전부터 HDFS 고가용성(HA)지원을 위해 구조가 변경되었다. 우선 초기의 구조를 살펴보고 문제점과 고가용성의 필요성을 숙지한 후 다른 포스팅에서 깊게 다루겠다.)

 

이미지 출저 https://www.slideshare.net/madvirus/hdfs-28871456
이미지 출저 https://dabingk.tistory.com/2


HDFS설계:

 

 

매우 큰 파일

- 매우 크다는 의미는 수백 메가바이트, 기가바이트 또는 테라 바이트 크기의 파일을 의미
스트리밍 방식의 데이터 접근 - HDFS의 시작 아이디어는 '가장 효율적인 데이터 처리 패턴은 한 번 쓰고 여러 번 읽는 것'이라는 것이다. 데이터셋은 새롭게 생성되거나 원본으로부터 복제된다. 후에 시간이 지남에 따라 다양한 분석이 가능한데 분석이 전부는 아니지만 첫 번째 레코드를 읽는 데 걸리는 지연 시간보다 전체 데이터셋을 모두 읽을 때 걸리는 시간이 더 중요하다
범용 하드웨어 - 하둡은 고가의 하드웨어만을 고집하지는 않는다. 하둡은 노드 장애가 발생할 확률이 높은 범용 하드웨어로 구성된 대형 클러스터에서도 문제없이 실행되도록 설계되었다.
데이터 무결성 - 하둡에서는 데이터를 한 번 저장하였을 때, 그 데이터 파일 끝에 데이터를 덧붙이는 것(append)은 가능하지만 파일 중간의 데이터를 수정하는 것은 불가능하다.
장애 복구 - 디스크 오류로 인한 데이터 저장 실패 및 유실과 같은 장애를 빠르게 감지하고 대처한다.

- 분산 서버 간 주기적으로 상태를 체크한다.(Heart Beat)
데이터 복제 (Replication) - 내고장성과 가용성을 위해 데이터를 복제하여 저장

- 오류데 대응하기 위해 각 블록들을 서로 다른 노드에 복제하여 저장한다. 기본적으로 3개를 복제

HDFS개념:

 

   
블록(Block) - 파일시스템에서 사용하는 블록의 개념과 같다.
  (한 번에 읽고 쓸 수 있는 데이터의 최대량)
  (사용자는 파일의 크기와 무관하게 파일을 읽고 쓸 수 있고,    특정 파일에 구애받지 않는다.)

- 파일시스템 블록의 크기는 보통 수 킬로바이트이고, 디스크 블록의 크기는 기본적으로 512바이트이다. HDFS블록은 기본적으로 128MB와 같이 큰 단위이고, 단일 디스크를 위한 파일시스템처럼 특정 블록 크기의 청크(chunk)로 쪼개지고 각 청크는 독립적으로 저장된다.

- 단일 디스크를 위한 파일시스템은 디스크 블록 크기보다 작은 데이터라도 한 블록 전체를 점유 BUT HDFS는 블록 크기보다 작은 데이터일 경우 전체 블록 크기에 해당하는 하위 디스크를 모두 점유하지는 않는다.
ex) 기존 파일시스템 1MB 저장 -> 128MB 사용
     HDFS               1MB 저장 -> 1MB사용

네임 노드(Name Node) - 파일시스템 내의 네임스페이스를 관리

- 파일, 디렉토리에 대한 메타데이터 유지

- HDFS의 파일 시스템에 접근하기 위해서는 네임노드에 먼저 접급하고 데이터의 위치를 파악한 후 데이터 노드로 접근하여 데이터 추출

- 네임노드에 장애 발생시 HDFS의 데이터를 읽어오지 못한다. 이를 방지하기위해 보조네임노드 사용

- 보조네임노드는 네임노드의 데이터를 온전하게 가지는 것이 아닌 시간차를 두고 저장, 네임노드에서 관리 데이터를 백업 후 보조네임노드와 같이 사용하는 것이 좋은 방법
데이터 노드 (Data Node) - 파일 시스템의 실질적인 일꾼

- 클라이언트나 네임노드의 요청이 있을 시, 블록을 저장, 탐색하며 저장하고 있는 블록의 목록을 주기적으로 네임노드에 보고

문제점:

고가용성이란 서버와 네트워크, 프로그램 등의 정보 시스템이 상당히 오랜 기간 동안 지속적으로 정상 운영이 가능한 성질을 말한다.

 

데이터의 손실을 방지하기위해 네임노드의 메타데이터를 다수의 파일시스템에 복제, 보조 네임노드를 활용하여 체크포인스트를 생성하는 방식을 활용했지만 궁극적인 파일시스템의 고가용성의 지원은 어려웠다.

 

이유는 네임노드가 단일 고장점(SPOF:Single Point Of Failure)이기 때문이다.

네임노드는 메타데이터와 파일 블록의 매핑 정보를 보관하는 유일한 저장소이기 때문에 네임노드에 장애가 발생하면 맵리듀스 잡을 포함, 모든 클라이언트가 파일의 읽기, 쓰기, 조회가 모두 불가능해진다.

 

이러한 문제의 해결을 위해 하둡 2.x 릴리즈부터 HDFS 고가용성(HA:High Availability)를 지원한다.

고가용성은 활성대기(active-standby)상태로 설정된 한 쌍의 네임노드로 구성되는데 활성 네임노드(active namenode)에 장애 발생 시 대기 네임노드(standby namenode)가 역할을 이어 받아 중단 없이 클라이언트의 요청을 처리한다.

 

고가용성(HA:High Availability)이란?

developer-woong.tistory.com/12

 

(하둡 기초) ep07_하둡 고가용성(HA:High Availability)이란?

하둡이란?: developer-woong.tistory.com/7 (하둡 기초) ep02_하둡에코시스템(Hadoop EcoSystem) 하둡의 역사에 대해 궁금하다면?! developer-woong.tistory.com/6 (하둡완벽설치!) ep01_하둡(Hadoop)의 역사, 등..

developer-woong.tistory.com

필요 지식:

 

얀(YARN)이란?

developer-woong.tistory.com/9

 

(하둡 기초) ep05_YARN이란?

하둡의 구성 요소 중 핵심 프레임워크인 Yarn에 대해 알아본다. 하둡이란? developer-woong.tistory.com/7 (하둡완벽설치!)ep02_하둡에코시스템(Hadoop EcoSystem) 하둡의 역사에 대해 궁금하다면?! developer-woo..

developer-woong.tistory.com

맵리듀스(MapReduce)란?

developer-woong.tistory.com/10

 

(하둡 기초) ep04_ MapReduce 맵리듀스란?

하둡 분산 파일시스템(HDFS)와 함께 핵심 구성 요소인 MapReduce에 관해 알아본다. 하둡이란? developer-woong.tistory.com/7 (하둡완벽설치!)ep02_하둡에코시스템(Hadoop EcoSystem) 하둡의 역사에 대해 궁금하다..

developer-woong.tistory.com

주키퍼(Zookeeper)란?

developer-woong.tistory.com/11

 

(하둡 기초) ep06_주키퍼(Zookeeper)란?

효과적인 분산 코디네이션 시스템을 위한 주키퍼(Zookeeper)에 대해 알아본다. 하둡이란?: developer-woong.tistory.com/7 (하둡 기초) ep02_하둡에코시스템(Hadoop EcoSystem) 하둡의 역사에 대해 궁금하다면?! d..

developer-woong.tistory.com

 

[참고1] Hadoop The Dfinitive Guide (하둡 완벽가이드 4판) - 톰 화이트 지음, 장형석, 장정호, 임상배, 김훈동 옮김

[참고2]dydwnsekd.tistory.com/15

[참고3]ko.wikipedia.org/wiki/%EA%B3%A0%EA%B0%80%EC%9A%A9%EC%84%B1

 

감사합니다!!

반응형

+ Recent posts