The components of the spark application
- Cluster Manager
- 전체 애플리케이션의 리소스 관리
- 드라이버가 요청한 실행기 프로세스 시작
- 프로세스가 사용가능한 최대 CPU core 개수 제한 등
- 종류
-
Standalone
-
Yarn
-
Kubernetes
-
Mesos
- Driver
- 주요 역할 : 스파크 애플리케이션의 실행을 관장하고 모니터링.
- 클러스터 매니저에 메모리 및 CPU 리소스를 요청.
- 애플리케이션 로직을 스테이지와 태스크로 분할
- 여러 실행자에 태스크를 전달.
- 태스크 실행 결과 수집.
- 1개의 스파크 애플리케이션에는 1개의 드라이버만 존재.
- 드라이버 프로세스가 어디에 있는지에 따라, 스파크에는 크게 두 가지 모드가 존재.
- 클러스터 모드 - 드라이버가 클러스터 내의 특정 노드에 존재.
- 클라이언트 모드 - 드라이버가 클러스터 외부에 존재.
- Executor
- 주요역할: 스파크 드라이버가 요청한 테스크들을 받아서 실행하고 그 결과를 드라이버로 반환
- JVM 프로세스
- 각 프로세스는 드라이버가 요청한 테스크들을 병렬로 실행
- Session
- 스파크 코어 기능들과 상호작용할 수 있게 해주는 객체
- 사용자가 객체를 생성하여 사용
- Job
- spark Action(collect(), take() 등)에 대한 응답으로 생성되는 여러 테스크로 이루어진 병렬연산
- Stage
- 스파크의 잡은 스테이지라 불리는 서로 의존성을 가지는 다수의 테스크의 모음집임
- task
- 스파크의 각 잡 별 실행기로 보내지는 작업 할당의 가장 기본적인 단위

driver가 각 executor에다가 task를 해야 한다고 지시를 내리면 executor에서 실제로 task 연산을 수행하여 driver에 반환
Transformation, Action, Lazy Evaluation
Transformation
- immutable(불변)인 원본 데이터를 수정하지 않고, 하나의 RDD나 Dataframe을 새로운 RDD나 Dataframe으로 변형
- (input, output) 타입 : (RDD, RDD). (DataFrame, DataFrame)인 연산
- ex) map(), filter(), flatMap(), select (), groupby(), orderby() 등.
- Narrow,Wide 두 종류가 존재.
- Narrow transformation
- 파티션 간 데이터 교환 발생 X (filter, map 등)
- Wide transformation
- 파티션간 데이터 교환이 발생 ( groupby(), orderby() 등)
Action
- 불변하는 input에 대해 부수 효과(함수 등)을 포함하고 output이 RDD나 DF가 아닌 연산
What is Spark RDD
‘Resilient Distributed Dataset’의 약자로 스파크의 기본 추상화 객체다.
RDD는 보통 Spark 2.xx에서 지원되던 것으로 3.xx로 넘어온 지금인 잘 안쓰인다.