Apache Spark: Difference between revisions

From HPCWIKI
Jump to navigation Jump to search
(Add categories: Network, Reference)
(Phase 6.1: LLM-Optimized Wiki Template 적용)
Line 1: Line 1:
== Apache Spark ==
{{Status
Apache Spark<ref>https://spark.apache.org/</ref> is an open-source developed at UC Berkeley in Scala,  Spark is a multi-language unified engine for large-scale data analytics, data science, and machine learning on single-node machines or clusters.
|status=Draft
|owner=Knowledge Agent
|last_update=2026-07-16
|review=Pending
}}


Spark can easily [[support]] multiple workloads ranging from batch processing, interactive querying, real-time analytics to machine learning and graph processing. Unlike many other platforms with limited options or requiring users to learn a platform-specific language, Spark supports all leading data analytics languages such as R, SQL, Python, Scala, and Java.
{{TOC}}


== PySpark ==
== Overview ==
The Spark Python API (PySpark) exposes the Spark programming model to Python. PySpark supports most Apache Spark features such as Spark SQL, DataFrame, MLib, Spark Core, and Streaming. PySpark allows users to write Spark applications using the Python API and provides the ability to interface with the Resilient Distributed Datasets (RDDs) in Apache Spark. PySpark also allows Python to interface with JVM objects using the Py4J [[library]].


Apache Spark는 UC Berkeley에서 개발한 오픈소스 대규모 데이터 분석, 데이터 과학 및 머신러닝을 위한 다국어 통합 엔진입니다. 단일 노드 머신이나 클러스터에서 실행됩니다.


[https://annefou.github.io/pyspark/ This site] introduce basic Big data analysis using PySpark
=== Summary ===
 
* 무엇인가? 대규모 데이터 분석, 데이터 과학, 머신러닝을 위한 다국어 통합 엔진
* 왜 필요한가? 배치 처리, 실시간 분석, 머신러닝, 그래프 처리 등 다양한 워크로드 지원
* 언제 사용하는가? 대용량 데이터 처리, ETL 파이프라인, 실시간 분석, 머신러닝
 
---
 
== Purpose ==
 
이 문서가 존재하는 이유
 
* Goal: Apache Spark의 개념, 주요 기능, PySpark 소개 제공
* Scope: Spark 기본 개념, PySpark API, 지원 언어
* Non-goals: Spark 아키텍처 상세, 클러스터 설정 가이드
 
---
 
== Key Concepts ==
 
{| class="wikitable"
! Concept
! Description
! Related
|-
| Apache Spark
| 대규모 데이터 분석을 위한 다국어 통합 엔진
| [[Cluster]]
|-
| PySpark
| Spark의 Python API — RDD, DataFrame, MLlib 지원
| [[Spark]]
|-
| RDD
| Resilient Distributed Datasets — 분산 데이터셋
| [[PySpark]]
|-
| Spark SQL
| 구조화된 데이터 처리를 위한 Spark 모듈
| [[Spark]]
|-
| DataFrame
| 분산 데이터셋 — 테이블 형식
| [[PySpark]]
|-
| MLlib
| Spark의 머신러닝 라이브러리
| [[PySpark]]
|-
| Streaming
| 실시간 데이터 처리 모듈
| [[Spark]]
|-
| Py4J
| Python에서 JVM 객체 인터페이스 라이브러리
| [[PySpark]]
|}
 
---
 
== Architecture ==
 
Spark 아키텍처:
 
<syntaxhighlight lang="mermaid">
graph TD
    A[Driver Program] --> B[SparkContext]
    B --> C[Cluster Manager]
    C --> D[Executor 1]
    C --> E[Executor 2]
    C --> F[Executor N]
    D --> G[RDD/DataFrame]
    E --> G
    F --> G
    G --> H[결과 반환]
</syntaxhighlight>
 
---
 
== Workflow ==
 
Spark 기본 워크플로우:
 
# SparkContext 생성
# RDD/DataFrame 생성
# 변환(Transformation) 및 액션(Action) 적용
# 결과 저장 또는 분석
 
---
 
== Detailed Explanation ==
 
=== Apache Spark 기본 개념 ===
 
Apache Spark는 UC Berkeley에서 Scala로 개발한 오픈소스 프로젝트입니다. 대규모 데이터 분석, 데이터 과학 및 머신러닝을 위한 다국어 통합 엔진으로, 단일 노드 머신이나 클러스터에서 실행됩니다.
 
Spark는 배치 처리, 인터랙티브 쿼리, 실시간 분석, 머신러닝, 그래프 처리 등 다양한 워크로드를 쉽게 지원합니다. 많은 다른 플랫폼과 달리 제한된 옵션이나 플랫폼 특정 언어를 학습할 필요가 없으며, R, SQL, Python, Scala, Java 등 주요 데이터 분석 언어를 모두 지원합니다.
 
=== PySpark ===
 
Spark Python API(PySpark)는 Python에 Spark 프로그래밍 모델을 노출합니다. PySpark는 다음과 같은 주요 Apache Spark 기능을 지원합니다:
 
* '''Spark SQL''' — 구조화된 데이터 처리
* '''DataFrame''' — 분산 테이블 형식 데이터셋
* '''MLlib''' — 머신러닝 라이브러리
* '''Spark Core''' — 기본 엔진
* '''Streaming''' — 실시간 데이터 처리
 
PySpark는 Python API를 사용하여 Spark 애플리케이션을 작성할 수 있으며, Apache Spark의 Resilient Distributed Datasets(RDDs)과 인터페이스할 수 있는 기능을 제공합니다. 또한 Py4J 라이브러리를 사용하여 Python에서 JVM 객체와 인터페이스할 수 있습니다.
 
---
 
== Configuration ==
 
=== PySpark 기본 설정 ===
 
<syntaxhighlight lang="bash">
# PySpark 설치
pip install pyspark
 
# PySpark 실행
pyspark
 
# PySpark 환경 변수 설정
export PYSPARK_PYTHON=python3
export PYSPARK_DRIVER_PYTHON=jupyter-notebook
</syntaxhighlight>
 
---
 
== Examples ==
 
=== Example 1: PySpark 기본 사용 ===
 
<syntaxhighlight lang="python">
from pyspark.sql import SparkSession
 
# SparkSession 생성
spark = SparkSession.builder    .appName("Example")    .getOrCreate()
 
# DataFrame 읽기
df = spark.read.csv("data.csv", header=True, inferSchema=True)
 
# 데이터 분석
df.show()
df.printSchema()
 
# SparkSession 종료
spark.stop()
</syntaxhighlight>
 
---
 
== Best Practices ==
 
* '''대규모 데이터''' — Spark는 대용량 데이터 처리에 최적화
* '''클러스터 모드''' — 대규모 워크로드는 클러스터 모드 권장
* '''PySpark''' — Python 사용자라면 PySpark API 활용
* '''캐싱''' — 반복적으로 사용하는 RDD/DataFrame은 캐싱 권장
* '''Partition 관리''' — 적절한 파티션 수 설정으로 성능 최적화
 
---
 
== Limitations ==
 
* 단일 노드에서는 오버헤드 발생 가능
* 작은 데이터셋에는 Pandas/NumPy가 더 효율적
* PySpark는 Python-GIL 제한 영향 받음
* 클러스터 설정 및 관리 복잡
 
---


== References ==
== References ==
<references />
 
* https://spark.apache.org/
 
---
 
== Related Pages ==
 
* [[PySpark]]
* [[Cluster]]
* [[Python]]
* [[Machine Learning]]
* [[Big Data]]
 
---
 
[[Category:Network]]
[[Category:Network]]
[[Category:Reference]]
[[Category:Reference]]

Revision as of 14:31, 16 July 2026

Template:Status

Template:TOC

Overview

Apache Spark는 UC Berkeley에서 개발한 오픈소스 대규모 데이터 분석, 데이터 과학 및 머신러닝을 위한 다국어 통합 엔진입니다. 단일 노드 머신이나 클러스터에서 실행됩니다.

Summary

  • 무엇인가? 대규모 데이터 분석, 데이터 과학, 머신러닝을 위한 다국어 통합 엔진
  • 왜 필요한가? 배치 처리, 실시간 분석, 머신러닝, 그래프 처리 등 다양한 워크로드 지원
  • 언제 사용하는가? 대용량 데이터 처리, ETL 파이프라인, 실시간 분석, 머신러닝

---

Purpose

이 문서가 존재하는 이유

  • Goal: Apache Spark의 개념, 주요 기능, PySpark 소개 제공
  • Scope: Spark 기본 개념, PySpark API, 지원 언어
  • Non-goals: Spark 아키텍처 상세, 클러스터 설정 가이드

---

Key Concepts

Concept Description Related
Apache Spark 대규모 데이터 분석을 위한 다국어 통합 엔진 Cluster
PySpark Spark의 Python API — RDD, DataFrame, MLlib 지원 Spark
RDD Resilient Distributed Datasets — 분산 데이터셋 PySpark
Spark SQL 구조화된 데이터 처리를 위한 Spark 모듈 Spark
DataFrame 분산 데이터셋 — 테이블 형식 PySpark
MLlib Spark의 머신러닝 라이브러리 PySpark
Streaming 실시간 데이터 처리 모듈 Spark
Py4J Python에서 JVM 객체 인터페이스 라이브러리 PySpark

---

Architecture

Spark 아키텍처:

graph TD
    A[Driver Program] --> B[SparkContext]
    B --> C[Cluster Manager]
    C --> D[Executor 1]
    C --> E[Executor 2]
    C --> F[Executor N]
    D --> G[RDD/DataFrame]
    E --> G
    F --> G
    G --> H[결과 반환]

---

Workflow

Spark 기본 워크플로우:

  1. SparkContext 생성
  2. RDD/DataFrame 생성
  3. 변환(Transformation) 및 액션(Action) 적용
  4. 결과 저장 또는 분석

---

Detailed Explanation

Apache Spark 기본 개념

Apache Spark는 UC Berkeley에서 Scala로 개발한 오픈소스 프로젝트입니다. 대규모 데이터 분석, 데이터 과학 및 머신러닝을 위한 다국어 통합 엔진으로, 단일 노드 머신이나 클러스터에서 실행됩니다.

Spark는 배치 처리, 인터랙티브 쿼리, 실시간 분석, 머신러닝, 그래프 처리 등 다양한 워크로드를 쉽게 지원합니다. 많은 다른 플랫폼과 달리 제한된 옵션이나 플랫폼 특정 언어를 학습할 필요가 없으며, R, SQL, Python, Scala, Java 등 주요 데이터 분석 언어를 모두 지원합니다.

PySpark

Spark Python API(PySpark)는 Python에 Spark 프로그래밍 모델을 노출합니다. PySpark는 다음과 같은 주요 Apache Spark 기능을 지원합니다:

  • Spark SQL — 구조화된 데이터 처리
  • DataFrame — 분산 테이블 형식 데이터셋
  • MLlib — 머신러닝 라이브러리
  • Spark Core — 기본 엔진
  • Streaming — 실시간 데이터 처리

PySpark는 Python API를 사용하여 Spark 애플리케이션을 작성할 수 있으며, Apache Spark의 Resilient Distributed Datasets(RDDs)과 인터페이스할 수 있는 기능을 제공합니다. 또한 Py4J 라이브러리를 사용하여 Python에서 JVM 객체와 인터페이스할 수 있습니다.

---

Configuration

PySpark 기본 설정

# PySpark 설치
pip install pyspark

# PySpark 실행
pyspark

# PySpark 환경 변수 설정
export PYSPARK_PYTHON=python3
export PYSPARK_DRIVER_PYTHON=jupyter-notebook

---

Examples

Example 1: PySpark 기본 사용

from pyspark.sql import SparkSession

# SparkSession 생성
spark = SparkSession.builder     .appName("Example")     .getOrCreate()

# DataFrame 읽기
df = spark.read.csv("data.csv", header=True, inferSchema=True)

# 데이터 분석
df.show()
df.printSchema()

# SparkSession 종료
spark.stop()

---

Best Practices

  • 대규모 데이터 — Spark는 대용량 데이터 처리에 최적화
  • 클러스터 모드 — 대규모 워크로드는 클러스터 모드 권장
  • PySpark — Python 사용자라면 PySpark API 활용
  • 캐싱 — 반복적으로 사용하는 RDD/DataFrame은 캐싱 권장
  • Partition 관리 — 적절한 파티션 수 설정으로 성능 최적화

---

Limitations

  • 단일 노드에서는 오버헤드 발생 가능
  • 작은 데이터셋에는 Pandas/NumPy가 더 효율적
  • PySpark는 Python-GIL 제한 영향 받음
  • 클러스터 설정 및 관리 복잡

---

References

---

Related Pages

---