프로그래밍/Spark

[Spark] Cluster mode vs Client mode

장경훈 2024. 11. 8. 15:07

Spark Driver란?

애플리케이션 실행의 핵심 구성 요소로, Spark 애플리케이션의 전체 실행을 지휘하고 제어하는 역할을 한다. Spark Driver는 클러스터 내 작업의 분배와 실행 상태를 관리하며, 사용자로부터 애플리케이션 로직을 전달받아 클러스터와의 상호작용을 수행한다.

Client Mode(default)

  • driver가 클러스터 외부에 있는 형태
  • Application Master는 node manager에게 자원 요청만을 하고 Spark에서 사용중인 리소스를 표시
  • 주로 개발 환경에서 디버깅 할 때 의미가 있는 형태
  • 장점: 로컬 머신에서 실행되기 때문에 디버깅과 실시간 로그 모니터링이 용이하다.
  • 단점: 클러스터의 자원을 효율적으로 사용하지 못할 수 있다.

Cluster Mode

  • driver가 클러스터 내부에 있는 형태
  • driver가 master상에서 동작 하기 때문에 리소스를 worker node에서 확인해야한다
  • production 환경 개발 시 의미가 있다.
  • 장점: 드라이버 프로그램이 클러스터의 노드에서 실행되므로 네트워크 지연이 적고, 클러스터 리소스를 더 잘 활용할 수 있다.
  • 단점: 로컬 환경에서의 디버깅이 어려울 수 있다

차이 요약

특징 Cluster Mode Client Mode
드라이버 위치 클러스터의 노드 내 로컬 머신
사용 시기 프로덕션 환경, 대규모 데이터 처리 개발, 테스트 및 디버깅
장점 네트워크 지연 최소화, 안정적 실행, 클러스터 리소스 활용 디버깅 및 실시간 로그 모니터링 용이, 개발 시 편리
제한 사항 디버깅이 어려울 수 있음 네트워크 의존성 높음, 자원 비효율적 사용 가능
사용 예시 장시간 배치 작업, 프로덕션 배포 코드 로직 검증, 실시간 모니터링 필요 시