일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Ubuntu 20.04
- 운영체제론
- 후기
- 8기
- 부스트캠프
- id # tr # 환경변수
- 네이버 부스트 코스
- 네이버
- 백준 #baekjoon # 2563
- Virtual Box 7.0.6
- 웹/모바일
- 보기 편하라고 만든
- Today
- Total
Miner
Spark(7) 본문
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 |