[Spark] Cluster mode

Woong·2022년 8월 15일
0

Apache Spark

목록 보기
21/22

local mode

  • 클러스터 없이 단일 머신으로 실행
  • Local client 에 Driver, Executor 1개씩 생성하여 실행하는 형태
  • 단순 테스트 용도로 사용

deploy mode에 따른 구분

Client mode

  • Spark 실행시 Driver 가 Cluster 외부에서 실행되는 모드
    • Driver, Spark Application 모두 Client 에서 실행
    • Client 중단시 Spark Context 종료되며 전체 Spark job 종료

Cluster mode

  • Driver가 Cluster 내의 Worker 노드 중 하나에서 실행되는 모드
    • Spark Application 은

Cluster manager

Spark Standalone

  • SPark 자체 Cluster manager 를 사용하는 모드

    • Master 가 Cluster manager 역할을 담당
      • 서버 자원 할당, Worker 작업 실행 관리
    • Worker 가 Executor, Task 실행
      • 데이터 처리 및 저장 수행
      • ※ Standalone 모드에선 각 Worker 노드당 Executor 1개 동작
  • client mode, cluster mode 배포 모드 지원

    • client mode : Driver 가 SparkSubmit 프로세스로 실행
    • cluster mode : Driver 가 Worker 노드들 중 하나에서 별개 프로세스로 실행

YARN

  • YARN 에서 cluster manager 역할을 수행
  • 애플리케이션 실행, 관리
  • yarn-client, yarn-cluster 모드 2가지 배포 모드 지원

Mesos

  • 지원 중단, 이하 생략

k8s

  • Driver, Executor pod 에 대한 스케줄링을 쿠버네티스가 핸들링하는 형태
  • 쿠버네티스에서 지원하는 Docker 컨테이너 이미지로 사용 가능
    • Dockerfile 기본 제공
  • Spark 앱 submit 시 아래와 같이 설정
    • --master k8s://https://<k8s-apiserver-host>:<k8s-apiserver-port>
    • Spark 앱 이름이 쿠버네티스 리소스 이름 지정에 사용되므로, 영어 소문자와 숫자로만 구성 필요
  • 쿠버네티스 클러터 정보는 kubectl 명령어로 조회
    • kubectl cluster-info

reference

0개의 댓글