Apache Spark란?

Park Jiseob·2025년 1월 11일
post-thumbnail

Apache Spark는 오픈 소스 분산 처리 시스템으로, 대규모 데이터를 빠르고 효율적으로 처리하기 위해 개발되었다.
Spark는 기본적으로 메모리 내에서 데이터를 처리하는 인메모리(In-Memory) 컴퓨팅을 지원하여, 디스크 기반의 처리 방식보다 훨씬 빠르게 데이터를 분석할 수 있다.
이러한 특징 덕분에, Spark는 특히 실시간 데이터 처리 및 반복적인 데이터 분석 작업에 매우 적합한 도구로 자리잡고 있다.

Spark의 주요 특징:
빠른 속도
Spark는 데이터를 메모리에 캐싱하여 처리함으로써 기존의 MapReduce와 같은 디스크 기반 시스템보다 최대 100배 빠른 속도를 보여줌. 디스크 I/O를 최소화하면서 대규모 데이터를 처리할 수 있어 빠르고 효율적인 연산이 가능하다.

다양한 언어 지원
Spark는 Scala, Java, Python, R 및 SQL과 같은 다양한 프로그래밍 언어를 지원한다. 사용자는 자신에게 익숙한 언어를 선택하여 Spark 애플리케이션을 작성할 수 있다.

범용성
Spark는 배치 처리뿐만 아니라 실시간 스트리밍 처리, 그래프 데이터 처리, 머신러닝까지 다양한 용도로 사용될 수 있다.
Spark가 제공하는 라이브러리:

  • Spark SQL: 구조화된 데이터 처리
  • Spark Streaming: 실시간 데이터 스트리밍 처리
  • MLlib: 머신러닝 라이브러리
  • GraphX: 그래프 처리

확장성
Spark는 수십 대에서 수천 대 이상의 노드를 가진 클러스터에서도 확장 가능하여, 대규모 데이터셋을 효율적으로 처리할 수 있다. 클러스터 관리자는 YARN, Mesos, 또는 Kubernetes를 사용할 수 있으며, 클라우드 환경에서도 손쉽게 Spark 클러스터 구축 가능하다.

인메모리 컴퓨팅
Spark의 가장 큰 장점 중 하나는 데이터를 메모리에 저장하여 반복적인 계산을 빠르게 수행하는 인메모리 컴퓨팅 기능이다. 이를 통해 여러 번의 계산을 수행해야 하는 작업에서 뛰어난 성능을 발휘한다.


참고) Apache Spark의 탄생 배경

Apache Spark는 2009년, 캘리포니아 대학교 버클리의 AMPLab에서 시작된 연구 프로젝트로 탄생했습니다. 당시 데이터 처리의 표준이었던 Hadoop MapReduce는 대규모 데이터를 처리하는 데 있어 중요한 역할을 했지만, 몇 가지 한계가 있었습니다. 특히, 반복적인 작업이나 실시간 데이터 처리에서 성능 저하가 발생하곤 했습니다.

Spark는 이러한 문제를 해결하고자 개발되었습니다. Spark의 주요 목적은 빠른 데이터 처리와 유연성을 제공하는 것이었습니다. Hadoop의 디스크 기반 처리 모델과 달리, Spark는 인메모리 컴퓨팅을 통해 데이터를 메모리에 저장하여 여러 단계의 연산을 빠르게 처리할 수 있도록 설계되었습니다. 이를 통해 반복 연산(예: 머신러닝 알고리즘)이나 실시간 데이터 스트리밍 처리에서 뛰어난 성능을 발휘합니다.

2010년 Spark는 오픈 소스로 공개되었고, 이후 2013년 Apache 소프트웨어 재단에 기부되어 Apache Spark 프로젝트로 발전했습니다. 현재 Spark는 배치 처리뿐만 아니라 스트리밍, 머신러닝, 그래프 분석 등 다양한 용도로 사용되며, 대규모 데이터를 처리하는 대표적인 프레임워크로 자리잡았습니다.

Spark의 탄생 배경은 데이터 처리 속도를 개선하고, 더 다양한 처리 요구를 충족하기 위한 노력이었으며, 이는 오늘날 빅데이터 생태계에서 Spark가 중요한 역할을 하게 된 이유입니다.


profile
Data Engineer

0개의 댓글