Spark

Spark란?

j.d 2025. 4. 18. 01:10

대규모 데이터를 빠르고 효율적으로 처리하려는 노력은 계속되어 왔습니다.

 

기의 고비용 병렬 처리 시스템부터 오픈소스 분산 처리 프레임워크까지, Spark가 주목받게 된 과정을 단계별로 살펴보겠습니다.

 

 

1. MPP (Massively Parallel Processing)

MPP는 ‘대규모 병렬 처리’를 의미합니다. 수많은 독립적인 하드웨어(노드)가 각자의 데이터베이스를 운영하며 병렬적으로 데이터를 처리하는 구조입니다.

 

  • 여러 대의 서버에서 병렬로 작업 처리
  • 데이터를 분산 저장하여 병목을 줄임
  • 고성능 시스템이지만 비용이 매우 높음

출처: https://medium.com/@jagadeshjamjalanarayanan/5-key-concepts-of-massively-parallel-processing-86d993552f8c

 

MPP는 Oracle Exadata, Teradata, IBM Netezza 같은 대형 벤더의 솔루션으로 잘 알려져 있습니다. 병렬성과 처리 성능이 뛰어났지만, 장비 도입과 라이선스 비용이 엄청나기 때문에 일반적인 기업에겐 진입 장벽이 매우 높았습니다.

이 한계는 결국 비용 효율적인 대안에 대한 수요로 이어졌죠.

 

2. Hadoop 생태계의 등장: HDFS + MapReduce

Google의 논문을 바탕으로 시작된 Hadoop은 오픈 소스 기반의 HDFS(Hadoop File System)MapReduce(분산 처리 엔진)를 중심으로 대량 데이터 처리를 가능하게 했습니다.

 

  • 대용량 데이터를 저렴한 범용 서버에 분산 저장 가능
  • Map → Shuffle → Reduce 형태의 단계적 처리
  • HDFS로 데이터의 내결함성(fault tolerance) 확보

출처: https://www.integrate.io/blog/guide-to-hdfs-for-big-data-processing/, https://matthewmacfarquhar.medium.com/mastering-mapreduce-a-step-by-step-java-tutorial-for-big-data-processing-47e1bd96d6e2

 

Hadoop은 MPP의 고비용 한계를 해결하며 ‘오픈소스 기반 분산 처리’의 문을 열었습니다.

하지만 MapReduce는 단점도 있었는데요. 디스크 I/O 중심의 처리 방식으로 인해 성능이 느리고, 복잡한 로직을 구현하기엔 개발 생산성이 낮았어요.

매 단계마다 디스크에 데이터를 쓰는 구조 때문에 실시간 분석에는 부적합했죠.

 

 

3. Spark의 등장: In-memory 기반의 고속 처리 솔루션

Spark는 Hadoop 이후 등장한 차세대 분산 처리 프레임워크로, 메모리 기반 처리를 통해 속도와 유연성을 크게 개선했습니다.

 

  • RDD, DataFrame, SQL 등 다양한 추상화 레벨 제공
  • DAG(Directed Acyclic Graph) 기반의 실행 최적화
  • In-memory 연산 중심 → 디스크 I/O 최소화
  • MapReduce보다 수십 배 빠른 성능
  • 오픈소스 기반으로 라이선스 비용 無
  • MLlib, Spark Streaming, GraphX 등 다양한 확장 모듈 제공
  • 데이터 웨어하우스(DW) 영역까지 영향력 확대 중

출처: https://www.databricks.com/kr/glossary/what-is-spark-streaming

 

Spark의 가장 큰 강점은 바로 메모리 중심의 처리 방식입니다.

반복 연산이 많은 머신러닝이나 그래프 처리 등에서 성능이 압도적으로 좋습니다. 또한, RDD나 DataFrame을 통해 복잡한 로직을 훨씬 간단하고 효율적으로 표현할 수 있어 개발자 친화적인 환경을 제공합니다.
Spark는 Hadoop의 한계를 극복하면서도, HDFS 등 기존 Hadoop 생태계와도 잘 통합되어 자연스럽게 업계 표준으로 자리 잡게 되었습니다.

 

 

 

'Spark' 카테고리의 다른 글

Pandas DataFrame vs Spark DataFrame  (0) 2025.04.18