본문 바로가기

Bigdata/spark

spark cluster 환경 정리

스파크 애플리케이션은 마스터 역할을 담당하는 드라이버(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 모드를 사용하게 되면 얀 클라이언트 프로그램에서 실행되는 드라이버가 애플리케이션 동작을 제어하고 얀의 애필리케이션 마스터는 단순히 노드 매니저에게 필요한 자원을 요청하는 역할만 합니다. 주로 개발과정에서 대화형 디버깅을 할 때 의미가 있습니다.