티스토리 뷰
kafka connector
kafka 토픽으로부터 데이터를 읽고 씀
checkpointing mechanism
exactly once를 보장하기 위해서 offset을 checkpointing 하고 추적함
position configuration
- setStartFromGroupOffsets: Flink는 컨슈머 그룹의 파티션들을 읽기 시작하고, kafka broker에 있는 offset을 커밋하는데, offset을 찾을 수 으면, auto.offset.reset 속성이 사용된다
- setStartFromEarliest(Latest): 이 모드에선 커밋된 offset들은 무시되고 시작 포시션으로 사용되지 않음
- job 이 실패해서 자동으로 복구하거나 savepoint 를 사용해서 복구하는 경우 start position 은 save point나 checkpoint에 저장된 offset에서 결정되는 것임 (configuration에서 결정되지 않음)
fault tolerance
checkpoint가 활성화 되었을때, flink는 카프카 컨슈머의 topic을 읽고, 카프카의 offset을 checkpointing 함
checkpoint 가 비활성화 되어있으면 카프카 컨슈머는 주기적으로 zookeeper에 offset을 커밋함
consumer lag
커밋된 offset과 각 partition의 최근 offset이 다른 경우를 consumer lag라고 함
flink가 새로운 데이터가 추가되는 시간보다 데이터를 늦게 읽는다면 lag 가 증가한다
Consumer Offset Committing
Kafka source commits the current consuming offset when checkpoints are completed, for ensuring the consistency between Flink’s checkpoint state and committed offsets on Kafka brokers.
checkpoint
flink barrier는 datastream을 pre-checkpoint 와 post-checkpoint로 나눈다.
kafka는 checkpoint 전의 이벤트들이 처리되면 checkpoint가 되게하고, checkpoint 가 된 이벤트들은 처리되지 못하게 한다
Ref: https://nightlies.apache.org/flink/flink-docs-release-1.15/docs/connectors/datastream/kafka/
https://flink.apache.org/2020/10/15/from-aligned-to-unaligned-checkpoints-part-1.html
'Data Engineering' 카테고리의 다른 글
데이터 카탈로그란 (AWS Glue, AWS Lake Formation) (1) | 2024.10.15 |
---|---|
DataLake 가 무엇인가 (0) | 2024.10.15 |
[Flink] 플링크의 스냅샷 생성 (0) | 2022.09.18 |
[Kafka] 카프카 overview & AWS MSK, Kinesis (0) | 2022.09.12 |
[zookeeper] 쥬키퍼 overview (공식문서 정리) (0) | 2022.09.07 |