Miner

Spark(7) 본문

데이터 엔지니어링/Spark

Spark(7)

MineTime76 2024. 1. 30. 18:13

spark 3.0, PySpark 사용, Spark 프로그램을 Yarn 위에서 돌릴 때


Spark 프로그램 실행 환경

  • 개발/테스트/학습 환경 (Interactive Clients) : 노트북(주피터, 제플린), Spark Shell
  • 프로덕션 환경 
    • spark-submit (command-line utility) : 가장 많이 사용됨
    • 데이터브릭스 노트북 : 노트북 코드를 주기적으로 실행해주는 것이 가능
    • REST API 
      • Spark Standalone 모드에서만 가능
      • API를 통해 Spark 잡을 실행
      • 실행코드는 미리 HDFS등의 파일 시스템에 적재되어 있어야 함

Spark 프로그램의 구조

Driver

  • 실행되는 코드의 마스터 역할 수행 (Yarn의 Application Master)

Executor

  • 실제 태스크를 실행해주는 역할 수행 (Yarn의 컨테이너)

Driver : 

사용자 코드를 실행하며 실행 모드(client, cluster)에 따라 실행되는 곳이 달라짐

cluster모드로 돌 때는 드라이버가 YARN 클러스터 안에서 동작한다. 안에서 컨테이너를 하나 잡아서(개발이 끝났을 때)

client모드로 돌 때는 드라이버가 YARN 클러스터 밖에서 동작한다. (개발을 할 때)

코드를 실행하는데 필요한 리소스를 지정함 (executor 개수를 정하고 executor 마다 CPU 개수..)

  • --num-executors, --executor-cores, --executor-memory

보통 SparkContext를 만들어 Spark 클러스터와 통신 수행

  • Cluster Manager (YARN의 경우 Resource Manager)
  • Executor (YARN의 경우 Container)

사용자 코드를 실제 Spark 태스크로 변환해 Spark 클러스터에서 실행

Executor : 

실제 태스크를 실행해주는 역할 수행(JVM) : Transformations, Actions

YARN에서는 Container가 된다. 

 

Spark 클러스터 매니저 옵션

local[n] - n개의 스레드, YARN, Kubernetes, Mesos, Standalone

 

local[n] : 

개발 / 테스트용 : Spark Shell, IDE, 노트북

n은 코어의 수 :  executor의 수가 됨

local[*]는 무엇일까? - 컴퓨터에 있는 모든 코어를 사용

YARN :

두 개의 실행 모드가 존재 : Client vs Cluster

1) Client 모드 : Driver가 Spark 클러스터 밖에서 동작

YARN 기반 Spark 클러스터를 바탕으로 개발/테스트 등을 할 때 사용

2) Cluster 모드 : Driver가 Spark 클러스터 안에서 동작

하나의 Executor 슬롯을 차지

실제 프로덕션 운영에 사용되는 모드

 

 

'데이터 엔지니어링 > Spark' 카테고리의 다른 글

Spark(9) - 데이터 구조  (0) 2024.02.07
Spark(8) : 데이터 처리  (0) 2024.02.07
Spark(6) - Spark 사용  (0) 2024.01.30
Spark(5) - Spark  (0) 2024.01.30
Spark(4) - Install Hadoop  (0) 2024.01.22