일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- kotlin
- Generic
- contravariant
- HDFS
- 가변성
- Heuristic Watermark
- processing time
- Generics
- ingestion time
- 불공변
- coroutines
- Coroutine
- java
- 공변
- Perfect Watermarks
- flink watermarks
- covariant
- lambda
- watermark
- flink
- Stream
- flink watermark
- Perfect Watermark
- Hadoop
- Heuristic Watermarks
- event time
- watermarks
- apache flink
- MapReduce
- Today
- Total
mm Home
Flink - Watermarks 본문
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 |