[Spark] 스파크란 무엇인가?

2025. 10. 10. 02:04·Data/Spark
스파크가 무엇인지를 정리한 글입니다.

 

1. 들어가며

일을 하면서 PySpark를 사용하다 보니, 그때그때 필요한 기능만 쓰게 되어서, "이참에 전체적으로 한번 정리해봐야겠다"는 생각이 들었습니다. 그래서 유튜브의 PySpark - Zero to Hero 시리즈를 기반으로 스파크의 기본 개념과 동작 방식을 하나씩 정리해보려고 합니다. 이번 글에서는 스파크가 무엇인지, 어떻게 작동하는지를 간단히 살펴보겠습니다.

 

2. 스파크란 무엇인가?

스파크는 한마디로, 엄청 큰 데이터를 여러 컴퓨터가 나눠서 빠르게 처리할 수 있도록 도와주는 오픈소스 프로그램입니다. 흔히 "빅데이터 처리 엔진"이라고 부르는데요. 여기서 엔진이란, 데이터를 읽고, 나누고 계산해서 원하는 결과를 만들어내는 "두뇌" 같은 존재라고 생각하면 됩니다.

 

스파크는 Scala, Python, Java, R 등 여러 언어를 지원해서, 개발자가 익숙한 언어로 코드를 작성할 수 있습니다. 또, SQL 분석, 머신러닝, 실시간 데이터 처리 같은 기능이 내장되어 있어서, 예전처럼 여러 도구를 따로 연결하지 않아도 스파크 하나로 다양한 데이터 작업을 처리할 수 있습니다.

 

스파크의 가장 큰 장점은 "속도"입니다. 데이터를 디스크에 계속 저장하고 불러오는 대신, 메모리(RAM)에 올려두고 바로 계산하는 구조라서 기존의 하둡(MapReduce)보다 최대 100배까지 빠르게 동작할 수 있다고 알려져 있습니다.

 

스파크는 여러 수준의 API와 다양한 라이브러리로 구성되어 있습니다.

  1. 저수준 API (Low-level APIs) - RDD, 분산형 변수
  2. 구조적 API (Structured APIs) - Dataset, DataFrame, SQL
  3. 라이브러리 및 에코시스템, 구조적 스트리밍, 고급 분석

스파크의 주요 컴포넌트

3. 스파크의 특징

3.1. 통합된 환경 (Unified Engine)

스파크가 등장하기 전에는 목적에 따라 다른 도구를 써야 했습니다. 예를 들어, 배치 처리는 하둡(MapReduce), 실시간 스트리밍 분석에는 스톰(Storm), 머신러닝 작업에는 아파치 머하웃(Apache Mahout)을 사용했습니다. 이렇게 여러 시스템을 연결하면 설정도 복잡하고, 유지보수가 어려웠는데요. 스파크는 이렇게 다양한 작업을 하나의 엔진 위에서 처리할 수 있도록 만들었습니다.

 

3.2. 유연한 구조 (Storage - Compute 분리)

예전의 하둡은 데이터를 저장하는 저장소(HDFS)와 계산을 수행하는 MapReduce가 함께 움직이도록 설계된 구조였습니다. 대부분의 작업은 "HDFS에 저장된 데이터를 읽어서 계산하고, 결과를 다시 HDFS에 저장하는 형태"로 진행됐는데요. 물론 다른 저장소를 연결할 수도 있었지만, 그럴 때마다 별도의 설정이나 커넥터를 직접 만들어야 해서 번거로웠습니다. 반면 스파크는 처음부터 저장소와 계산을 분리된 개념으로 설계되어서 데이터가 어디에 있든 유사한 방식으로 데이터를 불러오고 처리할 수 있게 되었습니다.

 

3.3. 다양한 라이브러리

스파크는 표준 라이브러리 외에도 다양한 외부 라이브러리를 지원합니다. 데이터 저장소와의 연결을 위한 커넥터를 비롯해, 머신러닝이나 스트리밍 같은 고급 분석 기능을 제공하기 위한 라이브러리들이 계속해서 발전하고 있습니다.

 

4. 예시로 알아보는 스파크의 동작 원리

간단한 예를 통해서 스파크가 어떻게 동작하는지 알아보겠습니다. 커다란 주머니가 하나 있는데, 이 안에 들어있는 구슬이 몇 개인지 세보려고 합니다. 혼자 센다면 매우 시간이 오래 걸리겠지만, 여럿이 나눠서 센다면 훨씬 빨리 작업을 끝낼 수 있습니다.

 

이 작업(job)을 효율적으로 하려면, 전체 작업을 지휘하고 관리하는 감독관(driver)이 필요합니다. 감독관은 큰 주머니를 여러 개의 작은 주머니(partition)로 나누고, 각각을 작업 팀(executors)에 나눠줍니다. 

 

"1번 그룹은 첫번째 주머니, 2번 그룹은 두번째 주머니, 3, 4번 그룹은 세번째, 네번째 주머니에 있는 구슬을 세어주세요."

 

일은 크게 두 단계(stage)로 나눌 수 있습니다.

  1. 개별 작업(local counting)
    각 그룹은 배정된 주머니를 받아와 구슬을 센 뒤, 결과를 감독관에게 전달
  2. 결과 취합(global counting)
    모든 그룹으로부터 받은 결과를 감독관이 모아, 전체 구슬 개수를 계산

구슬 세기 예시 도식화

 

이 예시를 스파크의 구성 요소로 다시 표현하면 다음과 같습니다.

스파크의 구성 요소 역할
감독관 = 드라이버(Driver) 전체 작업(job)을 관리하고, 결과 취합
작업자 그룹 = 익스큐터(Executor) 드라이버로부터 받은 작업(task)을 수행하고, 결과 보고
작업자 = 코어(Core) 익스큐터 내부에서 실제 작업을 수행하는 단위. (한번에 하나만 처리)
작은 주머니 = 파티션(Partition) 병렬로 작업을 수행할 수 있도록 데이터를 나눈 조각

 

5. 나가며

이번 글에서는 스파크가 무엇인지, 또 어떤 요소들로 이루어져 있는지를 살펴봤습니다. 다음 글에서는 스파크의 핵심 개념인 변환(transformation)과 액션(action)을 정리해보겠습니다.

 

참고자료

  • (영상) Ease With Data - How Spark Works
  • (책) 빌 체임버스, 마테이 자하리아 - 스파크 완벽 가이드 1장 아파치 스파크란

'Data > Spark' 카테고리의 다른 글

[Spark] 데이터프레임과 실행 계획  (0) 2025.11.03
[Spark] 변환과 액션  (0) 2025.10.31
'Data/Spark' 카테고리의 다른 글
  • [Spark] 데이터프레임과 실행 계획
  • [Spark] 변환과 액션
cloudndata
cloudndata
cloudndata 님의 블로그 입니다.
  • 전체
    오늘
    어제
    • 분류 전체보기 (16)
      • Cloud (0)
      • Data (4)
        • Databricks (1)
        • Curation (3)
        • Spark (3)
        • Project (0)
      • CS (0)
      • PS (4)
      • Reading (0)
  • 태그

    PySpark
    leetcode
    de
    Data Engineering Zoomcamp
    줌캠프
    데이터엔지니어
    스파크
    데이터엔지니어링
    데엔
    ProblemSolving
    DatabricksSQL
    코딩테스트
    100일챌린지
    Spark
    dezoomcamp
    DataEngineer
    데이터브릭스에서SQL
    AI미래
    코테준비
    DataEngineering
    데이터엔지니어미래
    AI시대
    Zoomcamp
    데이터브릭스
    ETL파이프라인
    알고리즘
    데이터엔지니어링프로젝트
    PS
    무료부트캠프
    문제풀이
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
cloudndata
[Spark] 스파크란 무엇인가?
상단으로

티스토리툴바