[DE] Spark 개념

박은서·2024년 12월 3일

DE

목록 보기
2/2

1. Apache Spark란?

Spark는 대규모 데이터 처리를 빠르고 효율적으로 수행할 수 있는 오픈 소스 분산 처리 시스템이다.

Spark의 주요 특징:

1) 빠른 속도: 메모리 기반 연산으로 디스크 I/O를 최소화해 빠른 데이터 처리 가능
2) 다양한 언어 지원: Python, Scala, Java, R 등 다수의 언어를 지원
3) 유연성: 배치, 스트리밍, SQL, 머신러닝, 그래프 처리 등 다양한 워크로드 지원
4) 확장성: 클러스터 환경에서 대규모 데이터 처리 가능

2. Spark의 아키텍처

1) Driver:
애플리케이션을 실행하고, 작업(Job)을 나누어 Executor에 분배하는 역할

2) Executor:
각 노드에서 할당된 작업(Task)을 수행하고 결과를 반환하는 역할

3) Cluster Manager:
자원을 관리하며, Spark가 클러스터에 접근할 수 있도록 지원 (예: YARN, Mesos, Standalone)

3. RDD (Resilient Distributed Dataset)

RDD는 Spark의 핵심 데이터 구조로, 불변(Immutable)하며 분산된 데이터 셋을 처리하는 데 최적화된 구조다.

RDD의 주요 특징:

1) 불변성: 생성된 RDD는 변경할 수 없음. 새로운 RDD를 생성해야 함
2) 분산성: 데이터를 클러스터 노드에 분산 저장 및 처리
3) 내결함성: 노드 장애 발생 시 데이터 복구 가능

4. RDD의 생성 방법

기존 데이터에서 생성:
파일 시스템(HDFS, 로컬 파일)이나 데이터베이스에서 데이터를 읽어 RDD 생성

컬렉션에서 생성:
Python이나 Scala의 리스트 등 컬렉션을 RDD로 변환

5. RDD의 주요 연산

Transformation: 기존 RDD에서 새로운 RDD를 생성하는 연산

map(), filter(), flatMap() 등이 대표적
Action: RDD에서 결과를 반환하거나 출력하는 연산

collect(), count(), first() 등이 대표적

6. Spark의 데이터 처리 방식

Batch Processing: 대량의 정적 데이터를 한 번에 처리
Stream Processing: 실시간 데이터 스트림을 지속적으로 처리

profile
Eunseo Park

0개의 댓글