Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- yarn
- 파이썬처럼생각하기
- Spark
- Kubeflow
- Minikube
- Kibana
- mesos
- 쿠버플로우
- hive
- 쿠버네티스
- Python
- Kubernetes
- fluentd
- 머신러닝
- 데이터 아키텍처
- 하이브
- AWS Glue
- gcp
- etl
- TABNET
- 쿠버플로
- Tabular
- 파이썬답게생각하기
- MachineLearning
- elk
- 데이터 플랫폼
- 리눅스
- 파이썬
- Opensearch
- MLOps
Archives
- Today
- Total
데이터를 걷는 선비
[Spark] Spark Local mode와 Deploy Mode(local이랑 standalone 차이!!) 본문
BigData/Data Engineering
[Spark] Spark Local mode와 Deploy Mode(local이랑 standalone 차이!!)
세미제로 2024. 1. 17. 16:23[순서]
- 0) Spark 구조 및 용어 설명
- 1) Spark Local mode VS Spark Deploy mode
- 2) Local Mode
- 3) Deploy Mode
- 4) Deploy Mode 중 Client Mode
- 5) Deploy Mode 중 Cluster Mode
- 6) Cluster Manager
0. Spark 구조 및 용어 설명
- Spark는 하나의 중앙 조정자(master, Driver)와
- 하나 또는 여러 개의 분산 작업 노드(slave, Executor)로 이루어져있으며,
- Driver와 Executor를 합쳐서 Spark application이라고 부릅니다.
- 분산 모드에서는, 하나의 Spark application은 Cluster Manager라고 불리는 외부 서비스를 통해 여러 개의 머신에서 실행됩니다.
- https://ko.wikipedia.org/wiki/%EB%A7%88%EC%8A%A4%ED%84%B0/%EC%8A%AC%EB%A0%88%EC%9D%B4%EB%B8%8C_(%EA%B8%B0%EC%88%A0)
마스터/슬레이브 (기술) - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 마스터/슬레이브(Master/slave)는 장치나 프로세스(마스터)가 하나 이상의 다른 장치나 프로세스(슬레이브)를 통제하고 통신 허브 역할을 하는 비대칭 통신 및 제
ko.wikipedia.org
1. Spark Local mode VS Spark Deploy mode
처음 스파크를 공부하다보면, 분산 모드라는 개념이 익숙하지 않은데,
갑자기 많은 용어가 쏟아지다 보니 용어가 헷갈리기 일수입니다.
특히 local과 standalone의 용어가 매우 헷갈립니다.
Cluster 미사용 | Cluster 사용(Standalone, YARN, Mesos, Kubernetes) | |
Local Mode | Deploy mode | |
Driver(master)가 외부 | Driver(master)가 내부 | |
Client mode | Cluster mode |
- Spark 사용시 Cluster를 사용하는가?
- Cluster 사용 안한다.
- Spark local mode
- Cluster 사용 한다.
- Cluster Manager로 무엇을 사용할 것인가?
- Standalone
- YARN
- Mesos
- Kubernetes
- Cluster Manager의 배포 방식(deploy mode)으로 무엇을 사용할 것인가?
- client
- cluster
- Cluster Manager로 무엇을 사용할 것인가?
- Cluster 사용 안한다.
분산 처리 모드를 사용하지 않는 것은 => Local 모드!!
분산 처리를 하는데 Cluster Manager로 자체 내장 플랫폼을 사용하는 것은 => Standalone Mode이다!!
2. Spark local mode (스파크 로컬 모드)
- local mode는 분산 클러스터를 사용하지 않고, 로컬 단일 머신에서 모든 것을 실행하는 형태입니다.
- Cluster와 Cluster Manager가 없기 때문에, 단일 머신 환경을 구축하거나 간단한 테스트를 할 때 유용합니다.
- 위 그림처럼, Local Client JVM에 Driver 1개와 Executor 1개를 생성하는 형태입니다.
- Executor 내부에는 여러 개의 Core를 사용하여 태스크를 병렬로 실행할 수 있습니다.
- spark-shell, spark-submit을 사용해 로컬 모드를 수행할 때는, --master 매개변수 값을 아래와 같이 설정할 수 있습니다.
- local
- 1개의 executor와 1개의 Core로 실행 (local[1])
- local[N]
- 1개의 executor와 N개의 Core로 실행
- local[*]
- 1개의 executor와 로컬머신이 갖고 있는 만큼의 Core로 실행
- 수행 예시
- local
spark-submit --master local[4] --jar semizero.jar
3. Spark Deploy mode
- 위처럼, Spark를 Local(사용자 PC) Thread에서 실행할 수도 있지만, 일반적으로는 Cluster 환경에서 실행됩니다.
- 이제 Cluster Manager의 종류 및 개념에 대해서 알아보기 전에,
- 각 Cluster Manager의, 2가지 배포 방식(deploy mode)에 대해 설명하겠습니다.
Cluster Manager의 배포 방식(deploy mode)으로 무엇을 사용할 것인가?
- 우선, 분산 모드에서 Spark 의 실행구조는 다음과 같습니다.
- 하나의 중앙 조정자(master, Driver)와 여러 개의 분산 작업 노드(slave, Executor)로 이루어져있으며,
- Driver와 Executor를 합쳐서 Spark application이라고 부릅니다.
- 하나의 Spark application은 Cluster Manager라고 불리는 외부 서비스를 통해, 여러 개의 머신에서 실행됩니다.
- 또한, Spark, Hadoop과 같이, 클러스터 환경에서 동작하는 대부분의 프레임워크는 배포 방식이라는 개념을 가지고 있으며
- <Cluster에서 Spark Application을 실행할 때 발생하는 단계>
- Client는 spark-submit을 사용하여 애플리케이션을 제출
- spark-submit은 드라이버 프로그램을 실행하고 사용자가 정의한 main() 메소드를 호출
- Driver Program은 Cluster Manager에게 Executor 실행을 위한 리소스를 요청
- Cluster Manager는 Driver Program을 대신해 Executor 들을 실행
- Driver가 사용자 애플리케이션을 통해 실행
- 프로그램에 작성된 RDD의 트랜스포메이션과 액션에 기반하여 Driver는 작업 내역을 단위 작업 형태(Task)로 나눠 Executor들에게 전송
- 단위 작업들은 결과를 계산하고 저장하기 위해 익스큐터에 의해 실행
- 드라이버의 main()이 끝나거나 SparkContext.stop()이 호출된다면 익스큐터들은 중지되고 클러스터 매니저에 사용했던 자원을 반환
- Spark의 배포 방식에는 Client mode와 Cluster mode가 있습니다.
- 두 가지 mode는 Spark Driver를 어디에서 실행시키느냐 따라 다릅니다.
- 간단한 설명을 통해 두 가지 mode의 차이점을 살펴 보겠습니다.
4. Deploy mode - Client mode (클라이언트 모드)
- 위 그림처럼, Client mode는 Spark 실행 시 Driver가 Cluster 외부에서 실행되는 모드를 말합니다.
- Driver Program과 Spark application은 모두 Client 프로세스에 있습니다.
- 따라서 Spark Application을 실행했던 콘솔을 닫아 버리거나 기타 다른 방법으로 Client 프로세스를 중지시키면,
- Spark Context도 함께 종료되면서 수행 중이던 모든 스파크 job이 중지 됩니다.
- 주로 개발과정에서 대화형 디버깅(spark-shell)을 할 때 사용합니다.
- 따로 지정하지 않으면 기본으로 선택되는 모드입니다.
5. Deploy mode - Cluster mode (클러스터 모드)
- 위 그림처럼 Cluster mode는, Driver가 Cluster 내의 Worker 노드 중 하나에서 실행되는 모드를 말합니다.
- Spark application은 Cluster에서 독립적인 프로세스(Task)들의 집합으로 실행되고
- 이들은 Driver Program의 Spark Context를 통해 조정됩니다.
- Spark Context는 몇 가지 타입의 Cluster Manager(어플리케이션 간 리소스를 할당)들에 접속할 수 있습니다.
- Standalone, Apache Mesos, Hadoop YARN 등
6. Cluster manager (클러스터 매니저)
https://semizero.tistory.com/57
'BigData > Data Engineering' 카테고리의 다른 글
[Hadoop] 하둡 (v3.3.5버전) 설치하기 (0) | 2024.02.11 |
---|---|
[Hive] 하이브 개념과 아키텍처 (0) | 2024.02.02 |
[Hive] Hive 중요 개념 둘러보기(MetaStore, 파티션) (0) | 2024.01.28 |
[SQL] DELETE, TRUNCATE, DROP 차이 (0) | 2024.01.18 |
[Spark] Spark Cluster Manager 종류 (0) | 2024.01.17 |
Comments