스파크 애플리케이션은 마스터 역할을 담당하는 드라이버(driver) 프로그램과 노드의 자원을 관리하는 클러스터 매니저 그리고 실제 데이터를 처리하는 익스큐터(executor)로 구성됩니다.
Driver
: Driver는 애플리케이션의 main()함수가 실행되는 프로세스이며 Spark Context를 생성하고 관리하며 transformation과 action 연산을 수행하게 됩니다.
Executor
: Executor는 CPU와 메모리 등의 자원을 할당받은 프로세스로서 Spark Job의 Task들을 수행하게 되며 처리된 데이터를 나중에 빠르게 재사용할 수 있또록 메모리에 저장해 두는 역할을 하게 됩니다.
Cluster Manager
: 클러스터 매니저는 스파크의 클러스터 모드를 구성하는 컴포넌트 중 하나로 여러 대의 서버로 구성된 클러스터 환경에서 다수의 애필리케이션이 함께 구동될 수 있게 애플리케이션간의 CPU나 메모리, 디스크와 같은 컴퓨팅 자원을 관리해 주는 역할을 담당합니다. 클러스터 매니저는 Hadoop Yarn, apache Mesos, Standalone를 지원합니다.
YARN에서의 실행
YARN cluster 모드
: yarn-cluster mode에서 dirver는 Application Master에서 실행됩니다. 얀에 리소스를 요청하는것과 얀 컨테이너 내부에서 프로세스를 실행하는 application을 모두 구동하는것에 책임이 있습니다. driver가 얀 컨테이너에서 동작하기 때문에 driver에 장애가 발생할 경우 다른 노드에서 driver가 재실행되게 됩니다. 주로 Production 환경에 적합합니다.
YARN client 모드
: Yarn-client 모드를 사용하게 되면 얀 클라이언트 프로그램에서 실행되는 드라이버가 애플리케이션 동작을 제어하고 얀의 애필리케이션 마스터는 단순히 노드 매니저에게 필요한 자원을 요청하는 역할만 합니다. 주로 개발과정에서 대화형 디버깅을 할 때 의미가 있습니다.
'Bigdata > spark' 카테고리의 다른 글
[spark] json 형태의 문자열을 dataframe으로 변환하는 방법 (0) | 2017.03.06 |
---|---|
spark streaming에서 중요한 옵션 정리 (0) | 2017.03.02 |