Apache Spark 기본 개념 - 아키텍처부터 간단한 코드 실행까지

2025. 2. 22. 22:46SPARK

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에서 실행 가능)

// SparkSession을 사용하여 0부터 999까지 숫자 생성
val myRange = spark.range(1000).toDF("number") myRange.show(5)
// 상위 5개 데이터 출력

 

Python 코드 (pyspark에서 실행 가능!)

# SparkSession을 사용하여 0부터 999까지 숫자 생성
myRange = spark.range(1000).toDF("number")
myRange.show(5) # 상위 5개 데이터 출력
 
 

📌 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