본문 바로가기
Big Data/Apache Spark

[Spark] Spark Deploy Mode

by seaweed_one 2022. 12. 16.
728x90

안녕하세요. 오늘은 스파크의 배포 방식에 대하여 알아보려고 합니다.

 

Spark의 Cluster Manager의 배포 방식(deploy mode)에는 Client mode와 Cluster mode가 존재.

Spark 사용 시 Cluster를 사용하는지 여부에 따라 결정되며 Cluster Mode 와 Client Mode 가 존재합니다.

둘의 가장 큰 차이점은 Spark Driver 실행 위치입니다.

자세히 알아볼까요? 

 

Cluster 미사용

Cluster 를 사용하지 않는 경우 spark local mode 로 실행됩니다.

Cluster 사용

ClusterManager를 선택해야합니다.

ClusterManager 의 종류 및 기능은 다음 포스팅에서 설명하겠습니다.

결정을 했다면 ClusterManager의 DeployMode를 선택해야 합니다.

ClusterManager's DeployMode

Cluster Mode

Cluster 내부에의 Worker Node 에서 Driver를 실행하는 모드로 하나의 Spark app은 Cluster Manager라고 불리는 외부 서비스를 통해 여러 개의 머신에서 실행되며 Driver 는 Cluster 내의 Worker노드 중 하나에서 실행됩니다.

spark context 는 클러스터 매니저와 연결되는 객체입니다.

실행 과정은 다음과 같습니다.

  1. Client는 spark-submit을 사용하여 애플리케이션을 제출.
  2. spark-submit은 드라이버 프로그램을 실행하고 사용자가 정의한 main() 메소드를 호출.
  3. Driver Program은 Cluster Manager에게 Executor 실행을 위한 리소스를 요청.
  4. Cluster Manager는 Driver Program을 대신해 Executor 들을 실행.
  5. Driver가 사용자 애플리케이션을 통해 실행된다. 프로그램에 작성된 RDD의 트랜스포메이션과 액션에 기반하여 Driver는 작업 내역을 단위 작업 형태(Task)로 나눠 Executor들에게 전송.
  6. 단위 작업들은 결과를 계산하고 저장하기 위해 익스큐터에 의해 실행.
  7. 드라이버의 main()이 끝나거나 SparkContext.stop()이 호출된다면 익스큐터들은 중지되고 클러스터 매니저에 사용했던 자원을 반환.

 

 

Client Mode

Driver Program과 Spark application은 Client 프로세스에 존재합니다.

Spark Application을 실행했던 콘솔을 닫아 버리는 등 Client 프로세스를 중지 시, Spark Context도 함께 종료되면서 수행 중이던 모든 job이 중지됩니다.

주로 대화형 디버깅(spark-shell) 시 사용하게 됩니다.

728x90

'Big Data > Apache Spark' 카테고리의 다른 글

[Spark] Spark Streaming 이란?  (0) 2022.12.21
[Spark] Spark Cluster Manager  (2) 2022.12.16
[Spark] Spark Job  (0) 2022.12.15
[Spark] Spark Evalution  (0) 2022.12.13
[Spark] Spark Partitioning  (0) 2022.12.11