스파크 개요 (Overview)

스파크 개요 (Overview)

출처: Apache Spark 공식 문서 — Overview (Spark 4.2.0)

Spark를 처음 접하는 분이라면, 우선 이 문서가 어떤 걸 다루는지 짚고 넘어갈게요. 이 페이지는 Apache Spark의 공식 문서 첫 관문으로, Spark를 어디서 받아서 어떻게 실행하고, 어떤 문서들을 따라가면 되는지를 한 번에 보여줍니다. 자세한 개념 설명보다는 "어디서 뭘 시작하면 되는지"의 지도 역할을 하는 문서예요.

다운로드 (Downloading)

Spark는 프로젝트 웹사이트의 다운로드 페이지에서 받을 수 있어요. 이 문서는 Spark 4.2.0 버전을 기준으로 합니다.

몇 가지 용어가 낯설 수 있는데, 짚고 넘어갈게요.

  • Spark는 HDFS와 YARN을 쓸 때 Hadoop의 클라이언트 라이브러리를 사용해요. 그래서 다운로드 파일이 유명한 몇 가지 Hadoop 버전에 맞춰 미리 패키징되어 있고, "Hadoop free" 바이너리를 받아서 Spark의 클래스패스를 보강하는 방식(hadoop-provided 참고)으로 어떤 Hadoop 버전이든 붙여 쓸 수도 있어요.
  • Scala와 Java 사용자는 Maven 좌표(coordinates)로 프로젝트에 Spark를 추가하고, Python 사용자는 PyPI에서 Spark를 설치하면 돼요.

소스에서 직접 빌드하고 싶다면 Building Spark 문서를 보면 됩니다.

Spark는 Windows와 UNIX 계열(예: Linux, macOS) 양쪽에서 돌아가고, 지원되는 Java 버전이 실행되는 플랫폼이라면 사실상 어디서든 돌아간다고 보시면 돼요. 여기에는 x86_64와 ARM64 JVM이 모두 포함됩니다. 로컬 한 대에서도 실행이 아주 쉽습니다. PATHjava가 있거나, JAVA_HOME 환경 변수가 자바 설치 위치를 가리키기만 하면 되거든요.

구동 환경 요구 사항을 정리하면 이렇습니다.

  • Java 17/21/25
  • Scala 2.13
  • Python 3.10+
  • R 4.0+ (더 이상 권장하지 않음, Deprecated)

참고로 Spark 4.2.0부터는 25.0.3 이전 버전의 Java 25 지원이 deprecated로 분류돼요. 또 한 가지 중요한 점이 있는데, Scala API를 쓸 때는 애플리케이션이 Spark가 컴파일된 것과 같은 Scala 버전을 사용해야 합니다. Spark 4.0.0부터 그 버전이 Scala 2.13이에요.

예제와 셸 실행하기 (Running the Examples and Shell)

Spark에는 몇 가지 샘플 프로그램이 들어 있습니다. Python, Scala, Java, R 예제는 examples/src/main 디렉터리에 있어요.

Python 인터프리터에서 Spark를 대화형으로 실행하려면 bin/pyspark를 사용해요.

./bin/pyspark --master "local[2]"

샘플 애플리케이션은 Python으로 제공되기도 하는데, 예를 들면 이렇게 실행합니다.

./bin/spark-submit examples/src/main/python/pi.py 10

Scala나 Java 샘플 프로그램을 돌릴 때는 Spark 최상위 디렉터리에서 bin/run-example <class> [params]를 쓰면 돼요. (내부적으로는 애플리케이션 실행용 일반 스크립트인 spark-submit을 호출합니다.) 예를 들면 이런 식이에요.

./bin/run-example SparkPi 10

Scala 셸의 변형 버전으로도 대화형 실행을 할 수 있는데, 이게 프레임워크를 익히기에 아주 좋은 방법입니다.

./bin/spark-shell --master "local[2]"

여기서 --master 옵션은 분산 클러스터의 master URL을 지정해요. 또는 local로 한 스레드에서 로컬 실행, local[N]으로 N개 스레드에서 로컬 실행을 정할 수 있습니다. 처음엔 테스트 용도로 local부터 시작하는 걸 권장해요. 전체 옵션 목록을 보려면 Spark 셸을 --help 옵션으로 실행하면 됩니다.

Spark는 1.4 버전부터 R API도 제공해요 (DataFrame API만 포함됩니다). R 인터프리터에서 대화형으로 실행하려면 bin/sparkR을 사용합니다.

./bin/sparkR --master "local[2]"

R로 된 예제 애플리케이션도 준비되어 있어요.

./bin/spark-submit examples/src/main/r/dataframe.R

Spark Connect로 어디서든 클라이언트 애플리케이션 실행하기

Spark Connect는 Spark 3.4에서 도입된 새로운 클라이언트-서버 아키텍처예요. Spark 클라이언트 애플리케이션을 분리(decouple)해서 Spark 클러스터에 원격으로 연결할 수 있게 해줍니다. 클라이언트와 서버를 분리함으로써 Spark와 그 생태계를 어디서든, 어떤 애플리케이션에든 내장해서 활용할 수 있게 되는 거죠. Spark 3.4에서는 Spark Connect가 PySpark용 DataFrame API와 Scala의 DataFrame/Dataset API를 지원해요.

Spark Connect에 대해 더 자세히 배우고 싶으면 Spark Connect Overview를 보세요.

클러스터에서 실행하기 (Launching on a Cluster)

클러스터에서 실행할 때의 핵심 개념은 클러스터 모드 개요 문서에서 설명합니다. Spark는 단독으로도, 기존의 여러 클러스터 매니저 위에서도 실행할 수 있어요. 현재 제공되는 배포(deployment) 옵션은 이렇습니다.

여기서부터 어디로 가면 될까요 (Where to Go from Here)

Spark가 처음이라면 아래 가이드를 순서대로 따라가 보세요.

프로그래밍 가이드:

API 문서:

배포 가이드:

기타 문서:

외부 리소스:


이 문서는 사실상 "Spark 공식 문서로 들어가는 출입구"예요. 개념 하나하나보다는 무엇을 어디서 시작할지가 핵심이므로, 처음엔 Quick Start를 열어보고 Spark가 실제로 도는 걸 확인한 뒤, 필요한 주제의 가이드로 이동하면 됩니다.