[빅데이터] 하둡 (Hadoop)과 Spark 개념 정리

2024. 6. 17. 21:15·Data Engineering/빅데이터

하둡 (Hadoop)과 Spark 개념 정리

빅데이터 정의

빅데이터 정의

  • 빅데이터란 거대한 규모(Volume), 빠른 속도(Velocity), 높은 다양성(Variety)을 특징으로 하는 데이터 (3V)
    • 빅데이터는 새로운 데이터 소스에서 나온 더 크고 복잡한 데이터셋
    • 서버 한대로 처리할 수 없는 규모의 데이터
    • 기존의 소프트웨어로는 처리할 수 없는 데이터

양 : Volume

  • 빅데이터를 사용하면 비정형 데이터를 대량으로 처리해야 함
  • 데이터의 크기는 테라바이트(TB)를 넘어 페타바이트(PB)가 될 수 있음

속도 : Velocity

  • 속도는 데이터가 얼마나 빠르게 수신 및 처리되는가를 나타냄
  • 일반적으로 데이터를 디스크에 기록하는 것보다 메모리로 직접 스트리밍 할 때 속도가 빠름

종류 : Variety

  • 사용 가능한 데이터의 유형 수를 나타냄
  • 기존 데이터 유형은 구조화되어 있지만, 빅데이터의 등장으로 새로운 비정형 데이터가 탄생
  • 텍스트, 오디오 및 비디오와 같은 비정형 / 반정형 데이터는 추가로 전처리가 필요

빅데이터 처리 특징

빅데이터를 처리하기 위해서는 다수의 컴퓨터로 구성된 프레임워크가 필요하다.

스토리지

  • 큰 데이터를 손실 없이 보관할 방법이 필요
  • 큰 데이터 저장이 가능한 분산 파일 시스템이 필요

병렬 처리

  • 처리 시간이 오래 걸림
  • 병렬 처리가 가능한 분산 컴퓨팅 시스템이 필요

SQL만으로는 부족

  • 비구조화된 데이터일 가능성이 높음, 예) 웹 로그
  • 비구조화 데이터를 처리할 방법이 필요

대용량 분산 시스템 정의

분산 환경 기반 (1대 이상의 서버)

  • 분산 파일 시스템과 분산 컴퓨팅 시스템이 필요
    • HDFS : 하둡에서의 분산 파일 시스템
    • MapReduce, YARN : 하둡에서의 분산 컴퓨팅 시스템

Fault Tolerance

  • Fault Tolerance : 일부 결함 혹은 고장이 발생해도 부분적으로 기능을 수행할 수 있는 시스템
  • 대용량 분산 시스템에서 소수의 서버가 고장 나도 정상적으로 동작해야 함

확장 용이

  • Scale Out : 서버의 사양을 올리는 것이 아닌 서버 개수를 추가하는 방식
  • 대용량 분산 시스템에서 Scale Out이 용이해야 함

하둡 (Hadoop)

하둡 정의

  • 다수의 노드로 구성된 클러스터 시스템
    • 노드 : 대형 네트워크 상에서는 장치나 데이터 지점을 의미
    • 마치 거대한 컴퓨터처럼 동작
    • 다수의 컴퓨터가 복잡한 소프트웨어로 통제됨

하둡 1.0

  • HDFS 위에 MapReduce라는 분산 컴퓨팅 시스템이 실행되는 구조
  • MapReduce 위에서 다양한 컴퓨팅 언어가 만들어짐 (Presto, Hive)

Hadoop 1.0

하둡 2.0

  • 하둡 1.0과 비교해 아키텍처가 크게 변경
  • 하둡은 YARN이란 이름의 분산처리 시스템 위에서 동작하는 애플리케이션이 됨
  • Spark는 YARN 위의 애플리케이션으로 실행

Hadoop 2.0

하둡 3.0

  • YARN 2.0 사용
    • Application 용도에 따라 YARN 자원 관리 가능
    • 타임라인 서버에서 HBase를 기본 스토리지로 사용 (하둡 2.1 이후)
  • 파일 시스템
    • 다수의 Standby 네임노드 지원 (원래는 하나만 지원)
    • HDFS, S3, Azure Storage 이외에 Azure Data Lake Storage 등을 지원

맵리듀스 (MapReduce) 프로그래밍

맵리듀스 프로그래밍의 특징

  • 기본적으로 큰 데이터를 처리하는 것이 목표
  • 데이터 셋은 Key, Valye의 집합이며 변경 불가
  • 데이터 조작은 map과 reduce 두 개의 오퍼레이션으로만 가능
    • 두 오퍼레이션은 항상 하나의 쌍으로 연속으로 실행
    • 오퍼레이션의 코드는 개발자가 채움
  • 맵리듀스 시스템이 map의 결과를 reduce 단으로 모아줌 (셔플링)

MapReduce Programming

맵리듀스 프로그래밍의 문제점

  • 낮은 생산성
    • 프로그래밍 모델이 가진 융통성 부족 : Map과 Reduce, 두 가지 오퍼레이션만 지원
    • 튜닝 / 최적화가 쉽지 않음, 예) Data Skew (치우짐)
  • 배치작업 중심
    • 기본적으로 Low Latency(지연시간)가 아닌 Throughput(처리 양)에 초점을 맞춤

문제점에 따른 대안의 등장

  • 범용적인 대용량 처리 프레임워크 등장 : YARN, Spark 등
  • SQL의 컴백
    • Hive : MapReduce 위에 구현, Throughput에 초점, 대용량 ETL에 적합
    • Presto : Low Latency에 초점, 메모리를 주로 사용하며 Adhoc 쿼리에 적합
    • 시간이 지나며 Hive와 Presto의 단점이 보완되어 서로 비슷하게 발전

Spark

Spark 3.0의 개념과 구성 요소

  • 하둡의 뒤를 잇는 2세대 빅데이터 기술로 YARN, k8s 등을 분산 환경으로 사용
  • 구성 요소 : Spark Core, Spark SQL, Spark ML, Spark Streaming, Spark Graph

Spark 3.0

Spark & MapReduce 비교

  • 메모리 or 디스크
    • Spark : 기본적으로 메모리 기반이고, 메모리가 부족해지면 디스크 사용
    • MapReduce : 디스크 기반
  • 분산 컴퓨팅 환경
    • Spark : 다른 분산 컴퓨팅 환경 지원 (k8s 등)
    • MapReduce : 하둡 (YARN) 위에서만 동작
  • 데이터 구조
    • Spark : pandas dataframe과 개념적으로 동일한 데이터 구조 지원
    • MapReduce : key, value 기반 데이터 구조만 지원
  • 컴퓨팅 방식
    • Spark : 배치 데이터 처리, 스트림 데이터 처리, SQL, 머신러닝 등 다양한 방식의 컴퓨팅 지원
    • MapReduce : 배치 데이터 처리만 지원

Reference

https://ko.wikipedia.org/wiki/%EB%85%B8%EB%93%9C_(%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99)

https://ko.wikipedia.org/wiki/%EC%9E%A5%EC%95%A0_%ED%97%88%EC%9A%A9_%EC%8B%9C%EC%8A%A4%ED%85%9C

https://www.oracle.com/kr/big-data/what-is-big-data/

'Data Engineering > 빅데이터' 카테고리의 다른 글

[빅데이터] csv vs parquet vs avro vs orc  (2) 2024.11.08
[빅데이터] 빅데이터 처리와 Hadoop의 등장  (2) 2024.07.05
'Data Engineering/빅데이터' 카테고리의 다른 글
  • [빅데이터] csv vs parquet vs avro vs orc
  • [빅데이터] 빅데이터 처리와 Hadoop의 등장
기억에 남는 블로그 닉네임
기억에 남는 블로그 닉네임
  • 기억에 남는 블로그 닉네임
    얕게, 깊게
    기억에 남는 블로그 닉네임
  • 전체
    오늘
    어제
  • 블로그 메뉴

    • 홈
    • 방명록
    • 글쓰기
    • 분류 전체보기
      • Data Engineering
        • Airflow
        • 빅데이터
        • 자동화
        • 기타
      • Infra
        • AWS
        • Terraform
        • [인프라 구축기] Terraform 활용 AWS ..
      • CS
        • 자료구조
        • 알고리즘
        • 네트워크
        • 데이터베이스
        • 이것이 취업을 위한 코딩 테스트다 with 파이썬
      • Python
      • Web
      • Git
      • 기타
        • 취업 & 진로
        • 회고록
        • 기타
      • 프로젝트 단위 공부
        • [부스트코스] DataLit : 데이터 다루기
        • [개인 프로젝트] 공모전 크롤링
        • [개인 프로젝트] FC Online 공식 경기 분..
        • 프로젝트 개선 방안
      • [프로그래머스] 데이터 엔지니어링 데브코스 3기
        • TIL(Today I Learn)
        • 숙제
        • 기타
      • 알고리즘 연습
        • 프로그래머스
        • 백준
  • 링크

    • 깃허브
    • 링크드인
  • 인기 글

  • 최근 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
기억에 남는 블로그 닉네임
[빅데이터] 하둡 (Hadoop)과 Spark 개념 정리
상단으로

티스토리툴바