여기 참조

Windows는 무한 스트림 처리의 핵심입니다. 

Windows는 스트림을 유한한 크기의 "버킷"으로 분할하여 계산을 적용할 수 있습니다.

 

주요개념 요약

윈도우 크기

  • tumbling window: 비중첩(non-overlapping) window
  • sliding window: 중첩 window

시간

  • 발생 시간 (Event Time): 이벤트가 실제로 발생한 시간을 의미합니다. 예를 들어, 센서가 데이터를 생성하거나 사용자가 클릭한 시간 등 실제 사건이 일어난 시간을 나타냅니다.
  • 수집 시간 (Ingestion Time): 이벤트가 시스템 또는 스트리밍 플랫폼에 처음 도착한 시간을 나타냅니다. 발생 시간과 수집 시간 사이에는 네트워크 지연, 메시지 큐 지연 등 다양한 요인으로 인해 차이가 발생할 수 있습니다.
  • 처리 시간 (Processing Time): 이벤트가 실제로 처리되기 시작한 시간을 의미합니다. 처리 시간은 이벤트가 시스템에 도착한 순서대로 처리되므로, 발생 시간이나 수집 시간과는 다를 수 있습니다.

지연(latency)

  • 이벤트 시간 지연 (Event Time Latency):  이벤트가 실제로 발생한 시간 (Event Time)과 이벤트가 시스템에서 처리되는 시간 (Processing Time) 사이의 차이를 나타냅니다.

워터마크

  • 워터마크는 "지금까지 도착한 데이터 중에서 가장 늦게 발생한 이벤트의 시간"을 나타냅니다. 예를 들어, "12:06"의 워터마크가 발행된다면, 12:06 이전에 발생한 모든 이벤트들은 시스템에 이미 도착했거나 곧 도착할 것임을 의미합니다. 즉, 12:06 이후에 12:05의 이벤트가 도착할 확률은 없다는 것을 보장합니다.
  • 이렇게 워터마크를 사용하면, 스트리밍 데이터에서의 시간 관련 처리를 더 정확하게 할 수 있습니다. 워터마크가 "12:06"으로 설정되면, 시스템은 12:06 이전의 모든 이벤트를 안정적으로 처리할 수 있음을 알게 됩니다.

 

window의 생명주기

간단히 말해서, window에 속해야 하는 첫 번째 요소가 도착하자마자 window가 생성되고(고정 윈도우 방식이 아니네)

시간(이벤트 또는 처리 시간)이 종료 타임스탬프 더하기 사용자가 허용한 지연 시간을 지나면 창이 완전히 제거됩니다.

 

Flink는 시간 기반 창에 대해서만 제거를 보장하며 다른 유형( 예: 전역 창)에 대해서는 제거를 보장하지 않습니다(window 할당자 참조 ). 예를 들어, 5분마다 비중첩(또는 텀블링) 윈도우를 생성하고 1분의 허용 지연 시간을 가진 '이벤트 시간 기반' 윈도우 전략의 경우, Flink는 이 간격에 속하는 타임스탬프를 가진 첫 번째 요소가 도착하면 12:00과 12:05 사이의 새 윈도우를 생성하고, 워터마크가 12:06 타임스탬프를 지나가면 제거합니다.

 

또한 각 윈도우에는 Trigger 및 함수( ProcessWindowFunction, ReduceFunction또는 AggregateFunction)( window 함수 참조 )가 연결되어 있습니다

함수는 윈도우 내용에 적용될 계산을 포함하며, 트리거는 윈도우가 함수가 적용될 준비가 되었는지를 나타내는 조건을 지정합니다. 트리거링 정책은 "윈도우 내의 요소 수가 4개 이상일 때"나 "워터마크가 윈도우의 끝을 지날 때"와 같은 것일 수 있습니다. 트리거는 생성과 제거 사이의 어느 시점이든 윈도우의 내용을 삭제하기로 결정할 수도 있습니다.

 

또는 추방자(Evictor)를 사용해서 윈도우 내의 요소들을 제거할수도 있다. 예를 들어 1분 윈도우에 100개가 들어왔는데 10개만 사용하고 나머지 90개는 추방자로 제거.

 

반응형

'Data Engineering' 카테고리의 다른 글

flink Table API를 사용한 실시간 Reporting샘플  (0) 2023.10.28
flink  (1) 2023.10.28
Spark, Flink를 사용한 실시간 스트림 분석  (0) 2023.08.02
Apache Flink 설치  (0) 2023.08.02
kafka Consume  (0) 2023.08.02

+ Recent posts