[Apache Flink] 주요 구성 요소 JobManager부터 Window까지 이해하기

궁금하면 500원·2024년 11월 23일

데이터 저장하기

목록 보기
4/23

Flink Entity의 주요 구성 시스템 이해의 핵심

Apache Flink는 실시간 스트리밍 처리와 배치 처리에 모두 강점을 가진 강력한 분산형 데이터 처리 플랫폼입니다.

1. JobManager

JobManager는 Flink 클러스터의 중앙 제어 역할을 담당합니다.

기능

  • 작업(Job)의 생명 주기를 관리

    	- 작업 스케줄링 및 상태(State) 관리
    	- TaskManager와의 통신을 통해 작업을 분배하고 진행 상황을 모니터링
  • 주요 역할
    - 장애 발생 시 작업 복구를 위해 상태 체크포인트를 관리
    - 클러스터 리소스의 효율적 사용을 위해 작업 최적화

2. TaskManager

TaskManager는 실제 데이터를 처리하는 작업자 노드입니다.

  • 구조와 기능
    - 여러 개의 작업 슬롯(Slot)을 보유하며, 각 슬롯은 병렬 작업을 실행
    - JobManager로부터 작업을 할당받아 처리

  • 중요한 특징

    	- 각 작업 슬롯은 작업 간 간섭을 최소화하기 위해 고유한 메모리 공간 사용
    
    	- 데이터 전송 시 네트워크 I/O를 최적화하여 성능 향상

3. State (상태 관리)

Flink에서 상태는 데이터 스트림 처리 중 유지해야 하는 중요한 데이터입니다.

  • 상태 유형
    - Keyed State: 특정 키별로 상태를 저장 (예: 사용자별 세션 데이터)
    - Operator State: 연산자 단위로 상태를 저장 (예: 데이터 소스 상태)

  • 특징 및 활용
    - Flink의 상태는 RocksDB나 메모리에 저장
    - Checkpointing을 통해 상태를 주기적으로 저장하며, 장애 발생 시 복구에 사용
    - Exactly-once 처리 보장을 통해 데이터 손실이나 중복 없이 안정적인 스트리밍 처리 가능

4. Connector

Flink의 Connector는 외부 시스템과의 데이터 흐름을 관리합니다.

  • 주요 역할

    	- 다양한 데이터 소스(예: Kafka, HDFS, AWS S3)로부터 데이터를 가져오거나, 데이터 싱크(예: MySQL, Elasticsearch)로 데이터를 저장
  • 특징

    	- 다양한 플러그인을 통해 손쉽게 확장 가능
    	- 데이터를 실시간으로 가져오는 소스와 저장하는 싱크를 유연하게 설정

5. Window

Window는 스트리밍 데이터에서 특정 시간이나 이벤트 범위를 기준으로 데이터를 그룹화하여 처리합니다.

  • 유형

    	- **Tumbling Window:** 고정된 크기로 데이터 그룹화
    	- **Sliding Window:** 고정된 간격으로 겹치는 데이터 그룹화
    	- **Session Window:** 이벤트 사이의 비활성 기간으로 그룹화
  • 활용 예시
    - 센서 데이터의 시간별 평균 계산
    - 사용자 활동 분석 및 세션 기반 추천 시스템 구축

6. Flink의 주요 구성 요소 간 상호작용

1. 데이터 흐름

- 외부 데이터 소스에서 데이터를 Connector로 가져옴
- 데이터를 TaskManager의 작업 슬롯에서 병렬로 처리
- 처리 중 발생하는 상태는 State로 저장

2. 복구 메커니즘

Checkpointing을 통해 작업 중단 시 데이터 상태를 복구

3. 작업 관리

JobManager가 TaskManager의 작업 할당과 상태 모니터링을 조정

활용 사례

Flink의 이러한 구성 요소는 대규모 데이터 처리와 실시간 데이터 스트리밍의 신뢰성과 성능을 동시에 제공합니다.

  • 금융 거래의 실시간 모니터링 및 사기 탐지
  • IoT 센서 데이터 수집 및 분석

  • 실시간 사용자 행동 분석 및 추천 시스템
profile
에러가 나도 괜찮아 — 그건 내가 배우고 있다는 증거야.

0개의 댓글