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