터칭 데이터
Spark 프로그램 실행 옵션 본문
Spark 프로그램 실행 옵션
Spark 프로그램을 실행하는 방법에 대해 먼저 살펴보자
Spark을 YARN 위에서 실행한다고 가정하고 설명하겠습니다.
Spark 프로그램 실행 환경
개발/테스트/학습 환경 (Interactive Clients)
노트북 (주피터, 제플린)
Spark Shell
프로덕션 환경 (Submit Job)
spark-submit (command-line utility): 가장 많이 사용됨
데이터브릭스 노트북:
- 노트북 코드를 주기적으로 실행해주는 것이 가능
REST API:
- Spark Standalone 모드에서만 가능
- API를 통해 Spark 잡을 실행
- 실행코드는 미리 HDFS등의 파일 시스템에 적재되어 있어야함
Spark 프로그램의 구조
Driver
실행되는 코드의 마스터 역할 수행 (YARN의 Application Master)
Executor
실제 태스크를 실행해주는 역할 수행 (YARN의 컨테이너)
Spark 프로그램의 구조
Driver:
사용자 코드를 실행하며 실행 모드(client, cluster)에 따라 실행되는 곳이 달라짐
코드를 실행하는데 필요한 리소스를 지정함
- --num-executors, --executor-cores, --executor-memory
SparkSession을 만들어 Spark 클러스터와 통신 수행
- Cluster Manager (YARN의 경우 Resource Manager)
- Executor (YARN의 경우 Container)
사용자 코드를 실제 Spark 태스크로 변환해 Spark 클러스터에서 실행
Executor:
실제 태스크를 실행해주는 역할 수행 (JVM): Transformations, Actions
YARN에서는 Container가 됨
Spark 클러스터 매니저 옵션
local[n]
YARN
Kubernetes
Mesos
Standalone
Spark 클러스터 매니저 옵션
local[n]:
개발/테스트용
- Spark Shell, IDE, 노트북
하나의 JVM이 클러스터로 동작
- Driver와 하나의 Executor 실행
n은 코어의 수
- Executor의 스레드 수가 됨
local[*]는 무엇일까?
- 컴퓨터에 있는 모든 코어 사용
local[3]가 사용되면 하나의 JVM 안에 3개의 Executor가 만들어짐 (4개의 쓰레드)
Spark 클러스터 매니저 옵션
YARN
두 개의 실행 모드가 존재: Client vs. Cluster
Client 모드: Driver가 Spark 클러스터 밖에서 동작
- YARN 기반 Spark 클러스터를 바탕으로 개발/테스트 등을 할 때 사용
Cluster 모드: Driver가 Spark 클러스터 안에서 동작
- 하나의 Container 슬롯을 차지
- 실제 프로덕션 운영에 사용되는 모드
Spark 클러스터 매니저와 실행 모델 요약
'하둡과 Spark' 카테고리의 다른 글
Intro (0) | 2024.01.16 |
---|---|
요약 (0) | 2024.01.15 |
Spark 소개 (0) | 2024.01.15 |
맵리듀스 프로그래밍 실행 (0) | 2024.01.15 |
하둡 설치 - 맵리듀스 프로그래밍 실행 (0) | 2024.01.15 |