
Apache Spark는 대규모 데이터 처리를 위한 오픈 소스 분산 클러스터 컴퓨팅 프레임워크로 빠른 속도와 유연성을 제공하며, 대규모 데이터 집합을 효율적으로 처리하고 분석할 수 있다.
시스템의 전반적인 성능을 향상시키기 위해 계산 부하량을 여러 노드에 분담하여 처리하는 병렬 처리방식으로 구동한다.
1. Partition
데이터를 처리하기 위해 논리적인 청크 단위로 분할하는 과정이며, 각 파티션은 클러스터의 여러 머신에 저장되어 처리되는 단계이다.
2. Transformation
데이터의 변경을 Spark에게 알리는 단계이며, 이때 실제 데이터 변경 연산은 수행되지 않고 논리적 실행 계획만 생성되는 단계이다.
3. Lazy Evaluation
연산 명령을 즉시 실행하지 않고, 원본 데이터에 적용할 연산 명령을 그래프 형태로만 세우는 단계이다.
(Action 단계 전까지 전체 데이터 흐름을 최적화하는 역할)
4. Action
실제 연산을 수행하는 단계이며, Transformation으로부터 결과를 계산하도록 지시한다.
5. Catalyst
Spark의 옵티마이저 엔진으로 사용자의 쿼리를 분석하고 최적화하여 실행 계획을 생성하는 단계이다.