Apache Spark: Difference between revisions
(Add categories: Network, Reference) |
(Phase 6.1: LLM-Optimized Wiki Template 적용) |
||
| Line 1: | Line 1: | ||
== | {{Status | ||
|status=Draft | |||
|owner=Knowledge Agent | |||
|last_update=2026-07-16 | |||
|review=Pending | |||
}} | |||
{{TOC}} | |||
== | == Overview == | ||
Apache Spark는 UC Berkeley에서 개발한 오픈소스 대규모 데이터 분석, 데이터 과학 및 머신러닝을 위한 다국어 통합 엔진입니다. 단일 노드 머신이나 클러스터에서 실행됩니다. | |||
[ | === 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 == | ||
* 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
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 기본 워크플로우:
- 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 기본 설정
# 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
---