spark 주요버전 업그레이드 히스토리 요약

2021-12-27

.

Data_Engineering_TIL(20211227)

[참고자료]

패스트캠퍼스 “올인원 패키지 : 실시간 빅데이터 처리를 위한 Spark & Flink Online” 강의내용

URL : https://fastcampus.co.kr/data_online_flink

[학습내용]

Spark 버전 1

(1) 2014년에 정식 발표

(2) RDD를 이용한 인메모리 처리 방식을 핵심으로 하는 엔진

(3) DataFrame (V1.3), DataFrame(V1.6) 개념 등장

(4) Project Tungsten 적용으로 메모리와 CPU 효율 최적화가 이루어져 엔진이 업그레이드 됨

Project Tungsten은 spark의 핵심적인 성능을 개선 시키기 위한 프로젝트로서, 메모리와 CPU 성능을 어떻게 하면 개선할지 고민하는 내용임.

Spark 버전 2

(1) 2016년에 발표

(2) Structured Streaming (spark streaming) 등장

(3) 버전 1의 DataSet과 DataFrame의 개념이 DataSet이라는 개념으로 통합됨

(4) Catalyst Optimizer 프로젝트 내용을 전면도입하여 프로그래밍 언어에 상관없이 동일한 성능을 보장

Catalyst Optimizer는 스파크 SQL의 핵심은 카탈리스트 옵티마이저이다. 쿼리 플랜을 받아 스파크가 수행할 수 있는 실행 계획으로 변환하는데 이를 최적화 시켜준다. (Catalyst automatically transforms relational queries to execute them more efficiently using techniques such as filtering, indexes and ensuring that data source joins are performed in the most efficient order). RDD에서 조인의 경우 사용자가 직접 처리해야 했지만 옵티마이저는 쿼리 플랜을 통해 최적화된 경로를 찾아준다. 예를 들어 where 조건을 분석하여 데이터를 적게 가져올 수 있는 경로를 탐색하여 데이터를 줄인후 셔플을 진행하여 속도를 높여 준다.

Spark 버전 3

(1) 2020에 발표

(2) MLlib 기능 추가

(3) Spark SQL 기능 추가

(4) Spark 2.4보다 약 2배 빨라짐

빨라질 수 있었던 이유 1. Adaptive execution 개념 도입

1 버전에서는 Rule-Based Optimizer 를 도입했고, 2 버전에서 Cost-Based Optimizer 가 추가되었다. 그리고 3.x 버전에는 Runtime 에 동작하는 Optimizer 가 추가되었는데 이게 Adaptive Query Execution(AQE) 이다.

AQE 는 Spark 버전이 3.x 로 올라가면서 새롭게 추가된 기능 중 하나로 Stage가 한 차례 마무리 되고 그 다음 Stage 가 동작하기 전에 데이터 파이프라인이 끊기고 실행을 멈춘다. 그리고 중간 결과물을 구체화(materialization)하고, 해당 스테이지의 병렬 처리가 완벽하게 끝난 후에야 다음 스테이지를 동작시킨다. 이때를 materialization points라고 하는데 이때 다시 런타임을 최적화한다.

빨라질 수 있었던 잉 2. Dynamic partition pruning 개념 도입

Dynamic Partition Pruning 의 핵심은 full scan 을 피하기 위해 연산에 필요한 데이터만 골라서 읽고 연산하는 개념이다.

여기서 pruning 의 의미는, 내가 필요로 하지 않는 데이터를 읽지 않도록 피하는 것(가지치기 하는 것)이다.

(5) PySpark 사용성 개선

(6) 딥러닝 지원 강화

(7) GPU노드 지원

(8) 머신러닝 프레임워크와 연계 가능

(9) GraphX - 분산 그래프 연산

(10) Python 2 지원이 끊김

(11) 쿠버네티스 지원 강화