Apache Flink Docs

이현우·2023년 3월 10일
0

Flink Architecture

Unbounded and Bounded

  • Unbounded streams은 프로그램 실행 시 쌓이는 로그처럼 무한히 생성되는 것을 말한다. 이벤트가 특정 시점에 완료되지 않기때문에 이벤트 수집 즉시 처리되어야 한다.
  • Bounded streams은 이벤트의 시작과 끝이 있다. 모든 이벤트를 수집하여 일괄처리가 가능하다.

JobManager

  • Flink Application의 분산 실행을 조정하고 관리한다. 작업 실행을 조율하고 완료, 실패된 작업에 대한 대응을 한다.
  • ResourceManager, Dispatcher, JobMaster로 구성된다.
    - ResourceManager는 Flink Cluster에서 리소스 할당 및 해제를 담당. 리소스 예약 단위인 task slots을 관리한다.
    - Dispatcher는 실행을 위한 Flink App를 제출하고 Flink WebUI를 실행하여 작업 실행에 대한 정보를 제공한다.
    • JobMaster는 단일 Job Graph 실행 관리를 담당한다.

Tasks and Operator Chains

  • 분산 실행을 위해 Flink는 각 연산자 작업을 연결하고 스레드를 사용하여 작업하여 버퍼링, 오버헤드를 줄여 대기 시간일 줄어 처리량을 증가시킨다.

Task Slots and Resources

  • TaskManager는 JVM 프로세스이며 별도의 스레드에서 하나 이상의 작업을 실행할 수 있다. 작업 수를 제한하기 위해 task slots이 최소 하나이상 존재한다.
  • TaskManager에서 관리되는 메모리의 1/3을 각 Task Slot으로 할당한다.
  • 동일한 작업을 하는 하나의 작업의 Slot 공유를 허용한다. 이로인해 병렬처리 하는 작업이 총 몇개인지 계산할 필요가 없다. 리소스 사용을 줄일 수 있다.

Timely Stream Processing

watermark

  • event 진행 상황을 체크하는 Flink의 매커니즘이다. watermark는 데이터 스트림의 일부로 흐르고 타임스탬프를 전달한다. 단순히 스트림의 주기적인 마커이다.

Windowing

  • 스트림에서의 요청은 무한하기 때문에 스트림의 모든 요소를 계산하는 건 불가능하다. 대신 일정 기준을 정해 구분하는 것을 Windowing이라고 한다.

Reference

Apache Flink Docs

0개의 댓글