Spark 프로그램의 구조
Driver
- 실행되는 코드의 마스터 역할 수행(YARN의 Application Master)
- 사용자 코드를 실제 Spark 태스크로 변환해 Spark 클러스터에서 실행
- 실행모드(client, cluster)에 따라 실행되는 곳이 달라짐
- cluster 모드로 돌 때는 드라이버가 YARN 클러스터 안에서 컨테이너 내 동작→ Application Master
- 실제 프로덕션 운영시(Spark-submit과 같은 커맨드라인 유틸리티를 써서 개발이 끝난 경우)
- client 모드일 때는 YARN 클러스터 밖에서 실행
- 교육이나 개발용으로 사용
- Spark Shell, 노트북으로 프로그램 실행
- cluster 모드로 돌 때는 드라이버가 YARN 클러스터 안에서 컨테이너 내 동작→ Application Master
- 코드를 실행하는데 필요한 리소스를 지정 --num-executors, --executor-cores, --executor-memory
- 보통 SparkContext를 만들어 Spark 클러스터와 통신 수행
- Cluster Manager (YARN의 경우 Resource Manager)
- Executor (YARN의 경우 Container)
Executor
- 실제 태스크를 실행해주는 역할 수행(하나의 Executor는 하나의 JVM이라고 보기): Transformations, Actions
- YARN의 컨테이너
Spark cluster 매니저 옵션
- local[n] *[n] 몇개의 cpu 코어 를 쓸건지, JVM안에 몇개의 쓰레드를 사용하는지, [*]은 컴퓨터에 있는 모든 코어 사용
- YARN (cluster모드/client모드-드라이버가 YARN 클러스터 안에 있는지/밖에 있는지에 따라)
- Kubernetes
- Mesos
- Standalone
'데브코스 데이터엔지니어링' 카테고리의 다른 글
[Spark] Spark 데이터 프레임 연산 Transformations, Actions, Job (1) | 2025.01.01 |
---|---|
[Spark] PySpark에서 Spark 세션 생성 (1) | 2024.12.31 |
[Spark] 아파치 스파크 3.0이란? (0) | 2024.12.31 |
[Hadoop] 맵리듀스 프로그래밍 실행, hdfs 명령어 정리 (0) | 2024.12.31 |
[Hadoop] 리눅스 서버에 의사분산 모드로 하둡 설치하기 (0) | 2024.12.31 |