상위: Flink
요약
Flink 아키텍처는 JobManager와 TaskManager로 구성된 분산 시스템입니다. JobManager는 작업 계획 수립과 조율을 담당하고, TaskManager는 실제 태스크 실행과 데이터 처리를 수행합니다. 이 구조를 통해 대규모 스트림 데이터를 효율적으로 처리할 수 있습니다.
Flink Architecture

Flink Program

- 데이터 소스 정의 및 데이터 변환
- 데이터 싱크 정의
- Dataflow Graph 생성
- 실행 계획 최적화
- JobManager에 실행 계획 전달
JobManager
→ 조율하고 관리하는 중앙 컴포넌트

- 작업 계획 및 스케줄링
- 리소스 관리
- 장애 복구
- 통신 및 조정
- 웹 인터페이스 제공
TaskManager

- 태스크 실행
- 리소스 할당 및 관리
- 데이터 버퍼링 및 전송
- 메모리 관리
- 하트비트 및 상태 모니터링
Flink Workflow

-
각 슬롯에 메모리 할당 (1/n )
- Task는 Task Slot에서 병렬 실행됨 → Slot 이 병렬 처리 단위
- 한 Task Slot에서 여러 연산자(Source, Map 등) 실행 가능

-
작업 슬롯 공유
- 리소스를 완전 활용 가능
- 하위 작업이 TaskManager에 공정하게 분배됨
→ 적은 자원으로 높은 효율
Task Slot 구조
메모리 할당
- 각 TaskManager는 여러 Task Slot을 가짐
- 각 Slot은 고정된 메모리 양을 할당받음
- Slot 간 메모리 격리로 안정성 확보
병렬 처리
- Task Slot은 병렬 처리의 기본 단위
- 하나의 Slot에서 여러 연산자 체이닝 가능
- 리소스 효율성 극대화
작업 분배
- JobManager가 Task를 TaskManager에 분배
- 로드 밸런싱을 통한 균등한 작업 분산
- 장애 발생 시 다른 Slot으로 재배치
관련 개념
- Introduction - Flink 기본 개념
- Basic Example - 아키텍처를 활용한 코드 예제
- DataStream API - DataStream API를 통한 프로그래밍