본문 바로가기

데이터처리/spark

[reference] Spark - 개념 클러스터 모드

Contents

  •  스파크? 클러스터 모드

  •  클러스터 매니저 종류

  •  응용프로그램 제출

  •  모니터링

  •  잡 스케쥴링

  •  용어 설명

 

스파크?

Apache Spark 는 빠르고 제네럴한 클러스터다

자바, 스칼라, 파이썬, R 등의 고급 API 들을 지원하는 최적화된 엔진을 제공한다고 한다.

 

스파크는 혼자서 또는 기존의 클러스터에서 실행 될 수 있는데

오늘은 스파크가 클러스터에서 어떻게 실행이 되는지 알아보도록 하자

 

-이 다음 내용에선 클러스터에서 응용 프로그램이 어떻게 실행되는지 알아볼 것

 

 

스파크는 클러스터에서 독립적인 프로세스 세트로 실행이 된다.

드라이버 프로그램의 스파크 콘텍스트 객체에 의해 조정된다.

 

구체적으로 보면, 스파크 콘텍스트는 여러 유형의 ClusterManager(spark standalone, Mesos, Yarn) 에 연결 할 수 있으며,

에플리케이션 간에 리소스를 할당 할 수 있다.

 

일단 연결 되면 스파크는 클러스터의 노드에서 executor 를 획득하게 된다.

이 executor 는 계산을 실행하고 응용 프로그램의 데이터를 저장하는 프로세스다.

 

다음으로 어플리케이션 코드(스파크 컨텍스트로 전달된 JAR 파일) 를 실행자에게 전송하고

스파크 컨텍스는 실행할 executor 에게 tasks 를 전달한다

 

 

이 아키텍처에는 다음과 같은 몇 가지 유용한 사항이 있다.

 

1.  각 어플리케이션은 자체 executor 프로세스를 얻는데, 이 프로세스는 전체 응용 프로그램의 지속 시간 동안 유지 되며,

여러 스레드(Multiple threads) 에서 tasks 를 실행한다.

이렇게 하면, scheduling side (각 드라이버가 own tasks 를 스케쥴링) executor side (서로 다른 JVM 에서 tasks 들이 어플리케이션의 tasks 가 실행) 면에서 이득이 생긴다.

 

2. 스파크가 cluster Manager 가 어떤건지 상관 없어진다.

다른 클러스터 관리자 (Mesos, Yarn) 에서도 실행이 쉬워진다.

 

3. 드라이버는 클러스터에서 작업을 스케쥴링 하기 때문에 worker node 와 가급적 가까워야 한다.

가급적 로컬 영역 네트워크에서 실행되면 좋다.

 

 

클러스터 매니저 종류

 

 

응용 프로그램 제출

spark-submit 스크립트를 이용해서 모든 유형의 클러스터에 제출 할 수 있다.

 

모니터링

일반적으로 :4040 포트에서 모니터링 할 수 있는 web UI 가 있다.

 

잡 스케쥴링

스파크는 어플리케이션 간(across application) 과 어플리케이션 내 (within application) 모두 에서 리소스 할당에 대한 제어권을 제공한다

 

 

용어 설명

 

Driver program - 어플리케이션 main() 함수를 실행하고 SparkContext 를 생성하는 프로세스

Cluster manager - 클러스터의 리소스를 획득하기 위한 외부 서비스 ex. YARN

Deploy mode - 드라이버 프로세스가 실행되는 위치를 구분. cluster Mode 에서는 프레임워크가 클러스터 내부에서 드라이버를 실행

"client" Mode 에서는 submitter 가 클러스터 외부에서 드라이버를 실행한다