2025. 2. 22. 22:46ㆍSPARK
1. Apache Spark란?
이전 글에서 Spark를 설치하고 spark-shell을 실행하는 것까지 완료했다. 이제 Spark가 어떻게 동작하는지 기본 개념을 정리해보려고 한다.
📌 이번 글에서 다룰 내용
- Spark의 기본 아키텍처
- Spark 애플리케이션 구조
- 다양한 언어 API
- SparkSession 개념
- 간단한 코드 실행
2. Spark 기본 아키텍처
Spark는 분산 데이터 처리를 위한 프레임워크로, 여러 개의 컴퓨터(클러스터)에서 데이터를 효율적으로 처리할 수 있도록 설계되었다.
✅ Spark의 클러스터 아키텍처
Spark는 데이터를 처리할 때 클러스터(Cluster) 환경에서 실행된다.
Spark에서 지원하는 클러스터 유형은 다음과 같다.
클러스터 유형설명
Standalone 모드 | Spark 자체 클러스터 매니저 사용 |
YARN (Hadoop) | Hadoop 클러스터의 YARN 리소스 매니저 활용 |
Mesos | Apache Mesos를 사용한 클러스터 관리 |
Kubernetes | 컨테이너 기반 클러스터에서 실행 |
📌 하지만, Spark는 로컬 모드도 지원하기 때문에 단일 머신에서도 실행할 수 있다!
👉 즉, 클러스터가 없더라도 내 컴퓨터에서 바로 테스트 가능하다.
3. Spark 애플리케이션 구조
Spark에서 실행되는 모든 작업은 Spark 애플리케이션으로 동작한다.
Spark 애플리케이션은 Driver 프로세스와 Executor 프로세스로 구성된다.
✅ Spark 애플리케이션의 구조

📌 핵심 개념 정리
- Driver 프로세스
- 애플리케이션 실행을 총괄하는 역할
- 사용자의 명령을 받아 Executor에게 전달
- SparkSession을 생성하여 작업을 관리
- Executor 프로세스
- 클러스터에서 개별적으로 실행되며, 실제 연산을 담당
- Driver가 보낸 명령(Task)을 수행
👉 즉, Driver는 명령을 내리는 역할, Executor는 실제 연산을 수행하는 역할!
4. Spark의 다양한 언어 API
Spark는 다양한 프로그래밍 언어를 지원한다.
📌 사용 가능한 API
- Scala (Spark의 기본 언어)
- Python (PySpark)
- Java
- SQL
- R
📌 실제 현업에서 많이 사용하는 API는?
- Python(PySpark): 데이터 분석, 머신러닝, AI 개발
- Scala: Spark 내부 최적화, 데이터 엔지니어링
5. Spark API의 두 가지 유형
Spark는 크게 두 가지 API를 제공한다.
API 유형설명특징
저수준 비구조적 API | RDD(Resilient Distributed Dataset)를 직접 조작 | 유연하지만, 최적화 어려움 |
고수준 구조적 API | DataFrame, Dataset, SQL을 사용 | 성능 최적화(O), 사용 편리 |
📌 최근에는 구조적 API(DataFrame, Dataset, SQL)가 주로 사용됨!
➡ RDD는 거의 사용되지 않으며, 대부분 DataFrame을 활용한다.
6. SparkSession 개념
Spark에서 모든 작업은 SparkSession을 통해 실행된다.
📌 SparkSession이란?
- 하나의 Spark 애플리케이션에서 사용자와 Spark 간의 연결을 제공하는 객체
- SparkSession이 있어야 Spark 작업을 수행할 수 있음
- 이전에는 SparkContext가 사용되었지만, 현재는 SparkSession이 표준
💡 즉, SparkSession = Spark 애플리케이션의 핵심 엔진!
7. 간단한 Spark 코드 실행
이제 SparkSession을 생성하고, 간단한 작업을 실행해보자
✅ Scala 코드 (spark-shell에서 실행 가능)
✅ Python 코드 (pyspark에서 실행 가능!)

📌 DataFrame이 생성되었고, SQL처럼 데이터를 조회할 수 있음
➡ 앞으로 데이터를 분석하거나 변환할 때 DataFrame API를 활용
8. 마무리 & 배운 점
오늘은 Spark의 기본 아키텍처와 애플리케이션 구조, 그리고 간단한 코드 실행까지 진행했다.
✅ Spark는 클러스터 기반의 분산 데이터 처리 엔진
✅ Spark 애플리케이션은 Driver & Executor 프로세스로 동작
✅ 다양한 언어 API를 지원하지만, 주로 PySpark와 Scala가 많이 사용됨
✅ SparkSession을 생성해야 작업을 실행할 수 있음
✅ DataFrame을 사용하면 SQL처럼 데이터를 쉽게 다룰 수 있음
'SPARK' 카테고리의 다른 글
SPARK 파티션, 액션, 그리고 DAG 구조 이해하기 (1) | 2025.02.25 |
---|---|
Apache Spark 설치 & 실행기 (0) | 2025.02.22 |