Spark 아키텍처 개요

1532 단어 스파크
Spark 응용 프로그램이 실행되는 방식에 대해 Apache Spark 사이트를 읽어도 아무 것도 잘 모르기 때문에 나름대로 정리해 보았습니다. 우선은 개념적이지만 Spark의 컴퍼넌트에 대해서입니다.

Spark의 구성 요소 개요





이것은 Apache Spark 사이트에서도 작성된 내용(Cluster Mode Overview)과 거의 동일하며, 개념적인 각 컴포넌트의 연결을 쓰고 있습니다. 또한 각 구성 요소의 개요를 요약하면,

드라이버 프로그램



Spark 어플리케이션의 실행 관리나 제어를 실시하는 것으로, main 메소드를 포함한 프로세스가 됩니다. 또 드라이버는 Spark 어플리케이션마다 1개 존재해, 어플리케이션의 환경(SparkContext)을 만드는 역할을 담당하고 있습니다.

Cluster Manager



Spark 응용 프로그램을 클러스터에서 실행하려면 클러스터 리소스(예: 메모리, CPU 등)를 확보하거나 스케줄링 관리를 수행해야 합니다. 이 작업은 Cluster Manager의 주요 역할입니다. 다소 까다로운 Cluster Manager에는 다음 세 가지가 있으며 그 중 하나를 사용합니다.
- Standalone : Spark에 표준으로 붙어있는 간단한 것
- YARN: Hadoop MapReduce, HBase, Storm 등 다양한 분산 애플리케이션을 실행하기 위해 만들어진 범용성을 갖춘 클러스터 관리자입니다.
- Mesos: (만지지 않았지만) YARN과 같이 범용적으로 이용할 수 있는 클러스터 매니저입니다.

작업자 노드



Spark 응용 프로그램의 코드를 실행하는 노드입니다.

Executor



JVM 의 프로세스로, 드라이버로부터 의뢰된 Task 를 실행합니다.

Task



Executor 내에서 실제 처리를 수행하는 스레드입니다.

Spark 애플리케이션



Driver Program 및 Executor를 포함한 클러스터에서 실행되는 사용자 프로그램입니다.

같아요.

클러스터 관리자에 따라 클러스터 관리와 앱 제어 방식이 조금씩 바뀌지만, 위의 기본 개념과 근육의 움직임은 같을까 생각합니다.

또, 클러스터 매니저가 런타임에 큰 역할을 하고 있다고 생각하므로, 다음번은 YARN 상에서의 Spark 의 동작에 대해 조사해 보고 써 보려고 합니다.

좋은 웹페이지 즐겨찾기