터칭 데이터

Spark 프로그램 실행 옵션 본문

하둡과 Spark

Spark 프로그램 실행 옵션

터칭 데이터 2024. 1. 15. 22:18

 

 

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