Data Engineering

하둡 Intro

print("스테코더") 2023. 6. 3. 19:36

하둡이란?

→ 대용량의 데이터를 분산처리해줄 수 있도록 해주는 아파치 톱 레벨 오픈소스 프로젝트

  • 분산파일시스템(HDFS)와 분산처리시스템(MapReduce)로 구성

    → 이 둘은 한 물리적인 클러스터에 공존

    (Name Node/JobTracker 같이, Data Node/Task Tracker 같이)

    • 분산파일시스템(HDFS) : 데이터를 저장, 관리
    • 분산처리시스템(MapReduce) : 저장된 데이터를 기반으로 데이터 처리

하둡의 특징

  • 데이터가 있는 곳으로 코드를 이용 (기타 다른 계산 framework에도 적용)

    → 대부분의 경우 데이터이 크기가 더 큼 (code < data, code→data로 보내는 게 핵심)

  • 스케일 업에 해당

    • 스케일 아웃 : 서버를 계속 늘리는 것 (복잡도 급격히 업)
    • 스케일 업 : 다수의 저렴한 서버를 사용하는 것
  • 단순한 데이터 모델

    • 반복적인 Key / Value Pair의 트렌스포메이션
    • 데이터의 locality를 최대한 이용한 프로그래밍 모델
  • 오프라인 배치 프로세싱에 최적화

HDFS

→ 웹하드 느낌

  • 하나의 Name Node(마스터)와 하나 이상의 Data Nodes(슬레이브)
    • Name Node : file 구조들을 관리하는 서버 (metadata 관리)
    • Data Node : file의 내용들을 관리 (실제 data 관리)
  • Secondary NameNode가 존재하여 주기적으로 Name Node의 내용을 백업 (snapshot)

HDFS

MapReduce

→ 계산을 위한 framework

  • 하나의 Job Tracker(마스터)와 여러개 Task Trackers(슬레이브)
    • Job Tracker : 자원 관리, job 상태 관리
    • Task Tracker : MapReduce의 실행/종료

MapReduce

하둡의 문제점

  • 너무나도 많은 버전과 부실한 서포트

  • 셋업과 사용이 어려움

  • 하둡에 맞지 않은 작업도 존재

    → 소규모이거나 대용량의 데이터처리가 필요하지 않으면 하둡을 이용할 이유가 X