mm Home

Flink - Watermarks 본문

개발/Big Data

Flink - Watermarks

jess_m 2019. 12. 11. 23:01

Watermarks

이전 장 에서 설명했는데 Event Time 기준으로 스트림 처리를 할 때의 단점을 보완하기 위해 Watermarks 메커니즘을 사용한다고 했다.
가령 로그를 1시간 단위로 집계를 내려고 하는데, 09:59 에 발생한 이벤트가 10:01분에 스트림 서버에서 처리되어 09:00 ~ 10:00 시간대로 처리가 되지 않는 경우가 생기기 때문이다. 그럼 Watermarks가 어떤 것인지 살펴보자.



Watermarks 란

Watermarks 는 단순히 Event Time의 타임스탬프를 기록해둔 마커이다.
특정 오퍼레이터의 윈도우 사이즈마다 Watermarks 에 timestamp가 마킹되어 있어서, 이 기록보다 느린 이벤트가 인입된다면 해당 이벤트를 Lateness로 간주하겠다는 것이다.
여기서 사용자 정책에 따라 해당 이벤트를 버릴 수도 있고, 이전의 Window에 지연 처리하여 포함시킬 수도 있다.

결국 개념적으로 Watermarks 는 Processing Time을 Event Time으로 바꾸어주는 함수로 생각할 수 있다.
F(P) -> E

여기서 2가지의 워터마크로 분류 가능하다.

 

Perfect Watermarks

우리가 모든 Input 데이터를 완전하게 알 수 있다면, 모든 Input에 대해 Watermarks를 기록하게 될 것이다. 그렇게된다면 당연히 지연 데이터는 발생하지 않게 된다.
Perfect Watermarks 는 모든 데이터를 확인하고 지연처리를 발생시키지 않는 방법이다.



Heuristic Watermarks

분산 환경에서 모든 Input 데이터를 완전히 알기란 비실용적이다. 이럴때 Heuristic watermarks 를 사용할 수 있다.
Heuristic watermarks 는 '추정'을 위해 가능한 최대의 Input 데이터를 사용한다. 너무 늦은 데이터는 버리는 것이다.
대개의 경우에 성능과 속도는 효율적이나, 예측이 꽤 정확하다.



아래 그림을 통해 더 명확하게 이해할 수 있을 것 같다.
왼쪽의 Perfect Watermarks 는 완전한 처리를 위해 성능은 느리고,
오른쪽 Heuristic Watermarks 는 효율적인 처리를 위해 극단적인 데이터는 버리는 것이다.

 

분류

 

 

이외에도 Lateness 를 판별하거나, 막기위한 기법은 다양하다.
Trigger, Accumulation, Session 등.. 자세한 내용은 아래 참고 문서를 살펴보자.

 

Flink 에서 실예제는 이후에 추가해야겠다.

 

 

 

참고문서

https://www.oreilly.com/ideas/the-world-beyond-batch-streaming-101
https://www.oreilly.com/ideas/the-world-beyond-batch-streaming-102
https://static.googleusercontent.com/media/research.google.com/ko//pubs/archive/43864.pdfhttp://vishnuviswanath.com/flink_eventtime.html

https://www.slideshare.net/dataArtisans/apache-flink-training-time-and-watermarks

'개발 > Big Data' 카테고리의 다른 글

Flink - Event Time  (0) 2019.12.09
HADOOP  (0) 2019.08.12
Comments