Spark, 스파크는 왜 생겨났나

Jeonghak Cho·2025년 3월 25일

Spark

목록 보기
4/12

📗스파크는 왜 생겨났나

  • 스파크 탄생 배경 이해하기
    • 하둡 탄생 배경
    • 빅데이터 정의
    • 스파크 탄생 배경

🔗[목차]

하둡의 탄생 배경

Hadoop은 대용량 데이터를 효율적으로 저장하고 처리하기 위해 탄생한 오픈소스 분산 컴퓨팅 프레임워크이다.
데이터 사용에 대한 폭발적인 증가[^1] 에 따라 기존의 단일 서버 시스템으로는 속도와 확장성 문제가 발생했다. Google의 연구 논문(GFS, MapReduce)에서 영감을 받아 탄생했으며, 2006년,Hadoop이 오픈소스로 공개되었다. 이 후, 대용량 데이터를 분산 저장(HDFS)하고 병렬 처리(MapReduce)하는 빅데이터 혁명의 시작점이 되었다.

Big Data(빅데이터)는 방대한 양의 데이터를 의미하며, 이를 수집, 저장, 처리 및 분석하여 유용한 인사이트를 도출하는 기술 및 방법론을 포함하는 개념이다.

빅데이터는 일반적으로 아래 3V(혹은 5V) 특성을 갖는 데이터를 의미한다.

  • Volume(규모): 방대한 양의 데이터
  • Velocity(속도): 실시간으로 생성 및 처리되는 데이터
  • Variety(다양성): 정형, 반정형, 비정형 데이터를 포함
  • (+) Veracity(정확성): 데이터의 신뢰성
  • (+) Value(가치): 데이터에서 얻을 수 있는 의미 있는 정보

빅데이터는 다양한 산업에서 활용되고 있다.

  • 비즈니스 및 마케팅: 고객 행동 분석, 추천 시스템
  • 금융: 사기 탐지, 리스크 관리
  • 의료: 질병 예측, 환자 데이터 분석
  • 스마트 시티: 교통 데이터 분석, 환경 모니터링
  • 제조: 공장 설비 예측 유지보수

하둡 아키텍처

하둡의 구성요소

Hadoop은 크게 두 가지 핵심 기술로 구성된다.

  • HDFS (Hadoop Distributed File System)

    • 분산 스토리지
    • 데이터를 여러 서버에 나눠 저장하는 분산 파일 시스템
    • 서버 장애가 발생해도 데이터가 복제되어 있기 때문에 안전함
  • MapReduce - 분산 데이터 처리 프레임워크

    • 데이터를 여러 개의 노드에서 병렬로 처리하는 방식
    • 맵(Map) → 셔플(Shuffling) → 리듀스(Reduce) 단계를 거쳐 데이터 분석 수행

추가적으로, Hadoop에는 YARN(리소스 관리), Hive(SQL 지원), HBase(NoSQL 데이터베이스) 등이 포함됨.

하둡의 한계

한계점해결 방법
디스크 기반 처리로 속도가 느림Spark(메모리 기반 연산)로 해결
실시간 처리 부족Spark Streaming, Flink로 대체
복잡한 Java 코드 필요Scala, Python API 지원

Spark 탄생 배경

하둡의 한계를 극복하기 위해 메모리 기반의 빠르고 유연한 데이터 처리 기술이 필요했다. 2009년, UC Berkeley의 AMPLab 연구팀은 Hadoop MapReduce의 단점을 해결하기 위해 새로운 분산 데이터 처리 프레임워크를 연구하기 시작했고, 2010년 오픈소스로 공개했다.

Apache Spark는 빅데이터를 빠르고 효과적으로 처리하기 위한 오픈소스 분산 컴퓨팅 프레임워크이다.

Spark 아키텍처

  • RDD (Resilient Distributed Dataset)
    • Spark의 핵심 데이터 구조로 불변(Immutable)하고, 분산(Distributed)된 데이터 컬렉션 - - map, filter, reduceByKey 등의 연산을 지원하여 병렬 데이터 처리 가능
  • DataFrame
    • SQL처럼 사용할 수 있는 컬럼 기반 데이터 구조
    • RDD보다 최적화된 실행 (Catalyst Optimizer, Tungsten 엔진)
  • Dataset
    • DataFrame과 유사하지만, 타입 안정성(Type Safety) 제공
    • Spark의 Scala API에서 가장 강력한 기능 제공

스파크는 언제 사용할까

  • Hadoop 대비 빠른 데이터 처리 성능이 필요한 경우
  • 배치(Batch) + 실시간(Streaming) 처리를 함께 해야 하는 경우
  • 데이터 엔지니어링(ETL), 머신러닝, 데이터 분석까지 하나의 프레임워크에서 처리하고 싶은 경우
  • 클라우드(AWS EMR, Databricks)와 통합하여 확장 가능한 빅데이터 시스템을 구축하려는 경우

[^1]: 📌데이터의 폭발적인 증가
1990년대 후반~2000년대 초반, 인터넷과 디지털 기술이 발전하면서 데이터의 양이 폭발적으로 증가했다. 1) 검색 엔진, SNS, 전자상거래 등에서 웹 로그, 이미지, 동영상, 텍스트 데이터가 급증 2) 기존 데이터베이스(RDBMS)는 대용량 데이터 저장 및 분석에 한계를 보임 3) 분산 환경에서 데이터를 효율적으로 저장하고 처리할 새로운 기술이 필요함

0개의 댓글