티스토리 뷰

Data Engineering/Hadoop

하둡(Hadoop)이란?

dev_jun 2022. 10. 23. 22:01

하둡이란?

야후의 더그 커팅이 '넛치'라는 검색엔진을 개발하는 과정에서 대용량의 비정형 데이터를 기존의 RDB 기술로는 처리가 힘들다는 것을 깨닫고, 새로운 기술을 찾는 중 구글에서 발표한 GFS(Google File System)와 MapReduce 관련 논문을 참고하여 개발한 프레임워크. 이후 아파치 재단의 오픈 소스로 공개되었다.

특징

하둡은 하나의 성능 좋은 컴퓨터를 이용하여 처리하는 대신(Scale-up) 적당한 성능의 범용 컴퓨터 여러 대를 클러스터화하고(Scale-out), 큰 크기의 데이터를 클러스터에서 병렬로 동시에 처리하여 처리 속도를 높이는 것을 목적으로 분산처리를 위한 오픈소스 프레임 워크

하둡의 구성 요소

하둡은 다음의 주요 모듈로 구성된다.

  • Hadoop Common
    • 하둡의 다른 모듈을 지원하기 위한 공통 컴포넌트 모듈
  • Hadoop HDFS(Hadoop Distributed File System)
    • 분산저장을 처리하기 위한 모듈
    • 여러개의 서버를 하나의 서버처럼 묶어서 데이터를 저장한다.
  • Hadoop YARN(Yet Another Resource Negotiator)
    • 병렬처리를 위한 클러스터 자원관리 및 스케쥴링 담당
  • Hadoop MapReduce
    • 분산되어 저장된 데이터를 병렬 처리 할 수 있게 해주는 분산 처리 모듈
  • Hadoop Ozone
    • 하둡을 위한 오브젝트 저장소

장점

  • 오픈소스로 라이센스에 대한 비용 부담이 적다.
  • 시스템을 중단하지 않고, 장비의 추가가 용이하다.(Scale-out)
  • 일부 장비에 장애가 발생하더라도 전체 시스템 사용성에 영향력이 적다.(Fault tolerance)
  • 저렴한 구축 비용과 비용 대비 빠른 데이터 처리가 가능하다.
  • 오프라인 배치 프로세싱에 최적화 되어있다.

단점

  • HDFS에 저장된 데이터를 변경할 수 없다.
  • 실시간 데이터 분석과 같이 신속하게 처리해야하는 작업에는 부적합하다.
  • 설정이 어렵다.

하둡의 버전별 특징

v1에서 하둡의 기본 아키텍처를 정립하였다. 병럴처리(MapReduce)는 jobtracker와 tasktracker가 담당하고, 분산저장(HDFS)은 네임노드와 데이터노드가 담당하도록 구조를 설정하였다. 하지만 병렬처리의 클러스터 자원관리와 애플리케이션의 라이프사이클 관리를 jobtracker가 모두 담당하여 병목현상이 발생하였다.

v2에서는 jobtracker의 병목현상을 개선하기 위해 YARN 아키텍처를 도입하였다. jobtracker의 기능을 분리하여 클러스터의 자원관리는 resouce manager와 node manager가, application life cycle 관리는 마스터와 컨테이너가 담당하도록 하였다.

v3에서는 이레이져 코딩(이레이저 코드를 이용하여 데이터를 인코딩하고, 데이터 손실시 디코딩 과정을 거쳐 원본 데이터를 복구하는 데이터 복구 기법 중 하나)을 도입하여 HDFS의 데이터 저장 효율성을 증가시켰으며, YARN 타임라인 서비스를 개선하고, 하둡 v1부터 사용된 쉘스크립트를 재작성하여 안정성을 높였다. MapReduce 처리에 네이티브 프로그램(외적인 지원 없이 특정 하드웨어나 OS에서 그대로 실행되는 것)을 도입하여 성능을 개선하였다.

하둡 v1

  • 분산저장, 병렬처리 프레임워크를 정의
    • 분산저장(HDFS)
      • 네임노드, 데이터 노드가 처리
    • 병렬처리(MapReduce)
      • 잡 트래커, 태스크 트래커가 처리
  • 클러스터당 최대 4000개의 노드를 등록 가능
  • 작업 처리를 슬롯 단위로 처리
    • 맵, 리듀스 슬롯을 구분하여 처리

하둡 v2


YARN 아키텍처를 도입하였다. 잡 트래커의 기능을 분리하여 자원관리는 리소스 매니저와 노드 매니저가, 애플리케이션 라이프 사이클 관리는 애플리케이션 마스터가, 작업 처리는 컨테이너가 담당한다.
작업 처리 단위는 컨테이너이며, 작업이 제출되면 애플리케이션 마스터가 생성되고, 애플리케이션 마스터가 리소스 매니저에 자원을 요청하여 실제 작업을 담당하는 컨테이너를 할당받아 작업을 처리한다. 컨테이너는 작업이 요청되면 생성되고, 작업이 완료되면 종료되기에 클러스터를 효율적으로 사용할 수 있다.

  • YARN을 도입하여 병렬 처리 구조를 변경
    • 클러스터 관리
      • 리소스 매니저, 노드 매니저
    • 작업 관리
      • 애플리케이션 마스터, 컨테이너
  • MR 외 Spark, Hive, Pig 등 다른 분산 처리 모델도 수행 가능
  • 클러스터당 1만개 이상의 노드 등록 가능
  • 작업 처리를 컨테이너 단위로 처리

하둡 v3

이레이져 코딩과 YARN 타임라인 서비스 v2 등이 도입되었다.
하둡 v2까지는 HDFS에서 장애 복구를 위해 파일 복제를 이용했다. 기본 복제 단위가 3개여서 파일 1개당 2개의 복제본을 가지게 된다. 따라서 1G 데이터 저장에 3G의 저장소를 사용하였다. 이레이져 코딩은 패리티 블록을 이용하여 1G 데이터 저장에 1.5G의 디스크를 사용하게 되고 저장소의 효율성이 증가하게 되었다.
네이티브 코드를 수정하여 셔플 단계의 처리 속도를 증가시켰으며 고가용성을 위해 2개 이상의 네임노드를 지원하는 등의 개선점이 추가되었다.

  • 이레이져 코딩 도입
    • 기존의 블록 복제(Replicaton)를 대체하는 방식으로 HDFS 사용량 감소
  • YARN 타임라인 서비스 v2 도입
    • 기존 타임라인 서비스보다 많은 정보를 확인 가능
  • JAVA8 지원
  • 네이티브 코드 최적화
  • 고가용성을 위해 2개 이상의 네임노드 지원
  • Ozone 추가
    • 오브젝트 저장소 추가
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함