스파크 기본 아키텍처
스파크는 클러스터의 데이터 처리 작업을 관리하고 조율한다.
스파크가 연산에 사용할 클러스터는 Spark Standalone Cluster Manager, Hadoop YARN, Mesos 와 같은 클러스터 매니저가 관리한다. 유저가 스파크 어플리케이션을 스파크 클러스터 매니저에 submit 하면 클러스터 매니저는 자원을 할당한다.
스파크 어플리케이션
스파크 어플리케이션은 드라이버 프로세스(Driver Process)와 다수의 익스큐터 프로세스 (Executor Process) 로 구성된다.
- 드라이버 프로세스는 main() 함수를 실행한다.
- 익스큐터 프로세스는 드라이버 프로세스가 할당한 작업을 수행한다. 그리고 진행 상황을 다시 드라이버 노드에 보고한다.
스파크 API
스파크 API 에는 저수준의 비구조적 API 와 고수준의 구조적 (Structured) API 가 있다.
SparkSession
Spark Application 은 SparkSession 이라는 드라이버 프로세스로 제어한다.
DataFrame
- 구조적 API
- 테이블의 데이터를 row , column 으로 표현
- DataFrame은 수천대의 컴퓨터에 분산되어 있다.
- Schema : column 과 column 의 type 을 정의한 목록
Partition
클러스터의 물리적 머신에 존재하는 row 의 집합. Spark 는 모든 익스큐터가 병렬로 작업 수행 하도록 파티션이라는 청크단위로 데이터를 분할한다. DataFrame을 사용하면 파티션을 개별적으로, 수동적으로 처리하지 않아도 된다.
Transformation
스파크의 핵심 데이터 구조는 불변성을 가진다. DataFrame을 변경하려면 어떻게 변경할지 스파크에게 알려주어야 한다. 트랜스포매이션은 명령이며 실제 수행은 액션이 호출되어야 일어난다. 트랜스포매이션으로 비지니스 로직을 표현한다.
좁은 의존성 : 각 입력 파티션이 하나의 출력 파티션에만 영향을 미친다.
넓은 의존성 : 하나의 입력 파티션이 여러 출력 파티션에 영향을 미친다. 클러스터에서 파티션을 교환하는 '셔플' 이 일어난다.
지연 연산 : 스파크는 특정 연산 명령이 내려지게 되면 즉시 데이터를 변경하지 않는다. 대신 트랜스포매이션의 실행 계획을 생성하며, action 으로 인해 실제로 실행할 때까지 대기한다. 그리고 트랜스포매이션을 간결한 물리적 실행으로 컴파일한다. 즉, 스파크는 연산을 최적화한다는 장점이 있다.
Action
트랜스포매이션으로 논리적인 실행 계획이 세워진 것을 실제로 수행하는 것이 바로 액션이다. 액션을 지정하면 Spark Job 이 생성된다.
'Data Engineering > Apache Spark' 카테고리의 다른 글
[Spark] 스파크 완벽 가이드 Ch09. 데이터 소스 (0) | 2023.11.27 |
---|---|
[Spark] 스파크 완벽 가이드 04 - Ch 04. 구조적 API 개요 (0) | 2023.11.07 |
[Spark] 스파크 완벽 가이드 (3) - Ch.03 스파크 기능 둘러보기 (Dataset, Structured Streaming) (0) | 2023.11.02 |
[Spark] 스파크 완벽 가이드 (1) - Ch 01. 아파치 스파크란 (0) | 2023.10.29 |
[Spark] Spark RDD(Resilient Distributed Data) ? (0) | 2023.05.23 |