스파크 클러스터
넓은 의미에서 보면, 스파크 애플리케이션은 스파크 클러스터의 병렬 작업들을 조율하는 하나의 드라이버 프로그램이다.
드라이버 프로그램은 SparkSession 객체를 초기화하고 클러스터 매니저와 통신하며 스파크 이그제큐터를 위한 필요한 자원(cpu, memory)를 요청한다. 또한 모든 스파크 작업을 DAG 연산 형태로 변환해 스케줄링하며 각 실행 단위를 태스크로 나누어 스파크 이그제큐터(Executor)에 분배한다. 자원이 할당되면 그 다음부터 드라이버 프로그램은 이그제큐터와 직접 통신한다.
스파크 2.0에서 스파크 세션은 모든 스파크 연산과 데이터에 대한 통합 연결 채널이 되었다. 이전의 SparkContext, SQLContext, HiveContext, SparkConf, StreamingContext 등을 합쳐 놓았으며 스파크 작업을 훨씬 간단하고 쉽게 만들어준다. SparkSession을 통해 JVM 실행 파라미터를 만들고, 데이터 프레임이나 데이터세트를 정의하고, 데이터 소스에서 데이터를 읽고, 메타데이터에 접근하고, 스파크 SQL 질의를 실행할 수 있다. 즉 SparkSession은 모든 스파크 기능을 한 군데에서 접근할 수 있는 시작점을 제공한다.
주요 용어
- Application : Spark에서 수행되는 사용자 프로그램으로, 드라이버 프로그램와 여러 이그제큐터 프로세스로 구성됨
- Application jar : 사용자 프로그램이 포함된 jar 파일, 사용자의 jar 파일에는 하둡 또는 스파크 라이브러리가 포함되지 않고 런타임 시에 추가됨
- Driver Program : 애플리케이션의 main 함수를 실행시키고 스파크 세션 객체를 생성하는 프로그램
- Cluster manager : 클러스터의 리소스를 관리하는 외부 서비스 (Standalone, Mesos, YARN, Kubernetes)
- Worker node : 애플리케이션 코드를 실행하는 클러스터의 노드
- Executor : 워커 노드에서 동작하며 드라이버 프로그램이 요청한 Task를 실제로 수행하는 프로세스, Task를 실행하고 메모리 또는 디스크에 데이터를 보관, 스파크 애플리케이션마다 Executor를 할당되어 실행
- Job : 애플리케이션에서 스파크에 요청하는 일련의 작업, 여러 개의 Task로 나뉘어 실행됨
- Task : 이그제큐터 프로세스가 실행하는 최소 작업 단위
- Deploy mode : 배포 모드는 클러스터 모드와 클라이언트 모드로 나뉨
배포 모드
스파크 애플리케이션의 배포 모드는 클러스터 모드와 클라이언트 모드로 나뉜다.
- 클라이언트 모드 : 클러스터 외부의 클라이언트에서 드라이버 프로그램 실행, spark shell을 사용하면 클라이언트 모드로 동작한다.
- 클러스터 모드 : 클러스터 노드 중 하나에서 드라이버 프로그램 실행
Cluster Manager
스파크는 여러 종류의 클러스터 매니저(또는 Resource Manager)와 같이 사용될 수 있다.
모드 | 스파크 드라이버 | 스파크 이그제큐터 | 클러스터 매니저 |
로컬 | 단일 JVM 위에서 동작 | 드라이버와 동일한 JVM 위에서 동작 | 동일한 호스트에서 실행 |
standalone | 클러스터의 아무 노드에서나 동작 가능 | 클러스터의 각 노드가 자제적인 이그제큐터 JVM을 실행 | 클러스터의 아무 노드에서나 할당 가능 |
Yarn(클라이언트) | 클러스터 외부의 클라이언트에서 동작 | yarn의 노드매니저의 컨테이너에서 동작 | yarn의 리소스 매니저가 yarn의 애플리케이션 마스터와 연계하여 노드 매니저에 이그제큐터를 위한 컨테이너 할당 |
Yarn(클러스터) | yarn 애플리케이션 마스터에서 동작 | yarn(클러스터) 모드와 동일 | yarn(클러스터) 모드와 동일 |
kubernetes | 쿠버네티스 pod에서 동작 | 쿠버네티스 pod에서 동작 | 쿠버네티스 마스터 |
Monitoring
각 드라이버 프로그램에는 일반적으로 포트 4040에 실행중인 task, executor, storage 사용량에 대한 정보를 표시하는 웹 UI가 있다. 웹 브라우저에서 드라이버 프로그램이 실행되고 있는 노드에서 http://<driver-node>:4040로 이동하면 해당 웹 UI를 볼 수 있다.
참고
https://spark.apache.org/docs/latest/cluster-overview.html
'Hadoop Echo System' 카테고리의 다른 글
YARN (0) | 2024.03.08 |
---|---|
스파크 애플리케이션 제출 (0) | 2024.03.04 |