DATABRICKS-Certified-Developer-1
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로 실제 분산 구조 시연
