주요 컨텐츠로 이동

Spark 애플리케이션이란 무엇인가요?

클러스터에서 분산 연산을 실행하기 위해 드라이버 프로세스와 실행자 프로세스가 어떻게 협력하는지 알아보세요.

4 Personas Analytics AIBI 5a
데이터 + AI 기반Less than a minute

작성자: Databricks 직원

Summary

  • Spark 애플리케이션의 아키텍처를 이해하고, 드라이버 프로세스가 애플리케이션 로직을 관리하고 클러스터 전체에서 작업을 조정하는 방식을 파악합니다.
  • 실행자 프로세스가 할당된 작업을 실행하고 계산 상태를 드라이버에 보고하는 방법을 알아봅니다.
  • YARN, Mesos, Spark 독립 실행형과 같은 클러스터 관리자가 여러 동시 실행 애플리케이션에 리소스를 할당하는 방식을 살펴봅니다.

Spark 애플리케이션은 driver 프로세스 하나와 일련의 executor 프로세스로 구성됩니다. driver 프로세스는 main() 함수를 실행하고 클러스터 내 노드에 위치하며 세 가지 작업을 담당합니다. 첫째, Spark 애플리케이션 관련 정보를 유지하는 것, 둘째, 사용자의 프로그램이나 입력에 대응하는 것, 셋째는 executor 작업을 분석, 배포, 예약하는 것입니다. driver 프로세스는 매우 핵심적인 역할을 합니다. 이것이 Spark 애플리케이션의 심장과 같으며, 애플리케이션 수명 내내 각종 주요 정보를 모두 유지합니다. executors는 driver가 할당한 작업을 실제로 실행하는 역할을 담당합니다. 이는 다시 말해 각각의 executor마다 맡은 일은 두 개씩이 다라는 뜻입니다. driver가 할당한 코드를 실행하면, 해당 executor에서 연산 상태를 도로 driver 노드에 보고합니다.

5X 리더

Gartner®: Databricks 클라우드 데이터베이스 리더

Spark 애플리케이션

실물 시스템을 제어하고 Spark 애플리케이션에 리소스를 할당하는 작업은 클러스터 관리자가 맡습니다. 이 경우 다음과 같은 여러 코어 클러스터 관리자 중 하나로, Spark의 독립 실행형 클러스터 관리자, YARN 또는 Mesos 등이 이에 해당합니다. 이것은 다시 말해 한 클러스터에서 동시에 여러 개의 Spark 애플리케이션을 실행할 수 있다는 뜻입니다. 클러스터 관리자에 관해서는 이 책 제4부: 프로덕션 애플리케이션에서 좀 더 자세히 다뤄보겠습니다. 앞서 본 그림에서 왼쪽에 있는 것이 driver이고 오른쪽이 네 개의 executor입니다. 이 다이어그램에서는 클러스터 노드라는 개념을 없앴습니다. 사용자가 구성을 통해 노드마다 몇 개의 executor를 포함할지 지정할 수 있습니다. [glossary-cta]

추가 자료

게시물을 놓치지 마세요

관심 있는 카테고리를 구독하고 최신 게시물을 받은편지함으로 받아보세요