Apache Spark Cluster Architecture – Easy Explanation

1. Computing on a Single Computer

먼저, 하나의 컴퓨터에서 컴퓨팅이 어떻게 이루어지는지 살펴보겠습니다.

하나의 컴퓨터에는 다음과 같은 컴퓨팅 자원이 있습니다.

  • CPU: 연산을 수행
  • Memory (RAM): 실행 중인 데이터 저장
  • GPU: 대규모 병렬 연산 (필요한 경우)

이 모든 자원은 운영체제(OS) 가 관리합니다.

Operating System의 역할

운영체제는 여러 애플리케이션이 동시에 실행될 때:

  • CPU와 메모리를 어떻게 나눠 쓸지 결정하고
  • 각 애플리케이션의 자원 사용을 스케줄링합니다

덕분에 여러 프로그램이 동시에 실행되어도 시스템이 안정적으로 동작합니다.


2. Why Single Computer Is Not Enough for Big Data

빅데이터를 처리하려면 다음과 같은 문제가 발생합니다.

  • 데이터 크기가 너무 큼
  • 연산량이 많음
  • 처리 시간이 오래 걸림

그래서 하나의 컴퓨터가 아닌 여러 대의 컴퓨터를 함께 사용하는 방식이 필요합니다.

이것이 바로 Computer Cluster입니다.


3. What Is a Computer Cluster?

컴퓨터 클러스터란 여러 대의 컴퓨터를 네트워크로 연결하여
마치 하나의 거대한 컴퓨터처럼 사용하는 구조입니다.

  • 각 컴퓨터를 Node라고 부름
  • 노드들은 고속 네트워크로 연결됨
  • 각 노드에는 독립적인 운영체제가 실행됨

하지만 여기서 새로운 문제가 생깁니다.

누가 이 많은 컴퓨터의 자원을 관리할까?


4. Cluster Manager & Node Manager

Single Computer에서는 OS가 자원을 관리했습니다.
Cluster 환경에서는 이를 대신하는 전용 자원 관리자가 필요합니다.

Cluster Manager

Cluster Manager는 클러스터 전체를 관리합니다.

주요 역할:

  • 전체 자원(CPU, Memory) 관리
  • 여러 애플리케이션 간 자원 할당
  • 각 노드의 상태 및 헬스 체크

👉 클러스터에서 애플리케이션을 실행하려면 반드시 Cluster Manager를 거쳐야 합니다.

Node Manager

각 노드에는 Node Manager가 실행됩니다.

역할:

  • 해당 노드의 자원 상태 모니터링
  • 실행 중인 프로세스 관리
  • 서버 장애 및 애플리케이션 실패 감지
  • 모든 정보를 Cluster Manager에게 보고

📌
Cluster Manager + Node Manager = 클러스터의 운영체제


5. Apache Spark Application Components

Apache Spark 애플리케이션은 항상 두 가지 구성 요소를 가집니다.

Spark Driver

  • 애플리케이션의 두뇌
  • 전체 작업 계획 및 제어
  • 자원 요청 및 Executor 관리
  • 작업(Task) 분배

Spark Executors

  • 실제 연산 수행
  • Driver로부터 Task를 받아 실행
  • 결과를 Driver에게 반환

6. Spark Application Execution Flow

Spark 애플리케이션이 실행되는 과정을 단계별로 살펴보겠습니다.

Step 1: spark-submit

사용자는 spark-submit 명령으로 애플리케이션을 제출합니다.

이때 다음 설정을 전달합니다.

  • Driver memory (예: 20GB)
  • Executor memory (예: 20GB)
  • CPU cores (예: 4)
  • Number of executors (예: 3)

Step 2: Driver Creation

  • Cluster Manager가 Node Manager에게 요청
  • 자원이 충분한 노드에서 Driver 프로세스 생성

Step 3: Executor Request

  • Driver가 Cluster Manager에게 Executor 요청
  • 설정된 개수와 자원 정보 전달

Step 4: Executor Creation

  • Cluster Manager → Node Manager
  • 자원이 충분한 노드에서 Executor 생성
  • Executor 위치 정보를 Cluster Manager에게 보고

Step 5: Driver–Executor Connection

  • Cluster Manager가 Executor 위치를 Driver에게 전달
  • Spark 애플리케이션 실행 완료

7. Parallel Processing in Spark

Driver는 작업을 여러 Task로 나누어 Executors에 전달합니다.

예를 들어 큰 파일을 읽을 때:

  • 파일을 여러 조각으로 분할
  • 여러 Executor가 동시에 처리

👉 이것이 Spark가 빠른 이유이며, 높은 병렬성을 제공합니다.


8. Spark Deployment Modes

Spark Driver가 어디에서 실행되느냐에 따라 Deployment Mode가 결정됩니다.

Cluster Mode

  • Driver와 Executor 모두 클러스터 내부
  • Cluster Manager가 전체 관리
  • Production 환경에 적합

Client Mode

  • Driver는 클러스터 외부 (사용자 머신)
  • Executor는 클러스터 내부
  • Driver가 종료되면 애플리케이션도 종료됨

👉 개발 및 테스트에 주로 사용


Local Mode

  • Driver와 Executor가 한 대의 머신에서 실행
  • 로컬 테스트 및 학습용

9. Responsibilities Summary

Spark Driver

  • 자원 요청 및 관리
  • 작업 스케줄링
  • Executor 상태 모니터링
  • 장애 발생 시 재요청
  • 사용자 입력 처리

Spark Executor

  • Task 실행
  • 결과 반환
  • 단순하고 명확한 역할

10. Databricks and Spark

Databricks는 Spark를 쉽게 사용할 수 있는 플랫폼입니다.

Databricks Editions

  • Community Edition (무료)
    • Single-node cluster
    • 학습용으로 충분
  • Paid Edition (AWS / Azure)
    • Multi-node cluster
    • 실제 분산 처리 구조 학습 가능

이 강의에서는:

  • Community Edition으로 기본 개념 학습
  • Azure Databricks로 실제 분산 구조 시연