유데미의 [Apache Spark - Beyond Basics and Cracking Job Interviews] 강의 내용 복습 겸 정리
강의링크
spark의 작업을 클러스터에 제출할때 보통 spark-submit 명령어로 클러스터에 배포하며
이때, 드라이버와 워커노드 리소스를 옵션을 통해 세부적으로 설정할 수 있다.
spark-submit
요약spark-submit
사용spark-submit [옵션] 애플리케이션.jar 또는 PySpark 스크립트 [애플리케이션 인자]
-class
Java/Scala의 main() 메서드가 정의된 클래스 지정.
PySpark에서는 필요 없음.
-master
클러스터 매니저 지정.
-yarn
: YARN 클러스터.
local: 로컬 실행 (local[3] → 3개의 스레드 사용).
-deploy-mode
클러스터에서 드라이버 실행 위치 설정.
client: 로컬 머신에서 드라이버 실행.
cluster: 클러스터 내에서 드라이버 실행.
Spark 애플리케이션을 제출할 때 spark-submit
명령어로 클러스터 모드와 클라이언트 모드 두 가지 중 하나를 선택할 수 있습니다.
- 클러스터 모드
spark-submit
이 YARN 리소스 매니저(RM)에게 드라이버를 클러스터 내 워커 노드의 AM 컨테이너에서 시작해달라고 요청합니다.- 클라이언트 모드
spark-submit
이 클라이언트 머신에서 직접 드라이버 JVM을 시작합니다.
드라이버는 클라이언트 머신에서 실행되고, 실행자만 클러스터에서 실행됩니다.
장점:
주 사용 사례: Spark 쉘, 노트북 등 인터랙티브한 작업에 사용됩니다.
-> 일반 애플리케이션의 경우 성능과 안정성을 위해 클러스터 모드를 사용
-> 인터랙티브 작업에는 클라이언트 모드를 사용
-conf
드라이버 리소스
-driver-cores: 드라이버 컨테이너 CPU 코어 수.
-driver-memory: 드라이버 컨테이너 메모리 용량.
실행자 리소스
-num-executors: 실행자 컨테이너 수.
-executor-cores: 각 실행자 컨테이너 CPU 코어 수.
-executor-memory: 각 실행자 컨테이너 메모리 용량.
spark-submit \
--class <클래스 이름> \
--master yarn \
--deploy-mode cluster \
--driver-cores 2 \
--driver-memory 8G \
--num-executors 4 \
--executor-cores 2 \
--executor-memory 16G \
애플리케이션.jar
예제 설명