Flink
-
[Flink] Checkpoint Alignment 알아보기Flink 2024. 3. 28. 06:39
- 목차 함께 보면 좋은 글. https://westlife0615.tistory.com/572 Flink Checkpoint 알아보기 - 목차 들어가며. Flink 의 Checkpoint 는 Flink Data Stream 이 어떻게 처리되고 있는지에 대한 상태를 저장하는 스냅샷입니다. Mapper, Filter, Window Operator 등이 끊임없이 흘러가는 Event 들을 처리합니다. Filte westlife0615.tistory.com 들어가며. 이번 글에서는 Checkpoint Alignment 에 대해서 알아보려고 합니다. Checkpoint Alignment 를 이해하기 이전에 Checkpoint Barrier 그리고 Checkpoint 가 수행되는 방법에 대해서 먼저 알아보겠습니다...
-
[Flink] Operator Chaining 알아보기Flink 2024. 3. 25. 06:07
- 목차 들어가며. 이번 글에서는 Flink Operator Chaining 에 대해서 알아보려고 합니다. Flink 는 여러 Operator 들을 조합하여 데이터 처리 어플리케이션을 구성합니다. Flink Operator 의 예로 Filter, Map, Window, Join 등의 여러 Operator 들이 존재하며, 이들이 연결되어 하나의 어플리케이션을 만듭니다. 아래의 예시처럼 말이죠. Map -> Map -> Sink 로 구성된 Flink DataStream 의 그래프 > Operator Chaining 은 여러 Operator 들을 하나의 Task 로 묶는 기법을 의미합니다. 아래 예시는 Source -> Map1 을 하나의 Task 로 묶고, Map2 -> Sink 를 하..
-
[Flink] Async IO Retry Strategy 알아보기Flink 2024. 3. 23. 10:50
- 목차 들어가며. 이번 글은 Flink Async IO 의 Retry Strategy 에 대해서 알아보려고 합니다. 이전에 작성하였던 https://westlife0615.tistory.com/781 글과 이어지는 내용입니다. [Flink] Async IO 알아보기 ( AsyncDataStream ) - 목차 들어가며. 이번 글에서는 Flink DataStream API 의 Async IO 에 대해서 알아보도록 하겠습니다. Async IO 는 Flink DataStream API 에서 제공하는 비동기처리를 위한 기술입니다. Java 가 기본적으로 제공하 westlife0615.tistory.com Async IO 는 네트워크 통신을 수행하는 Task 를 효율적으로 수행하기 위해서 주로 사용됩니다. 네트..
-
[Flink] Async IO 알아보기 ( AsyncDataStream )Flink 2024. 3. 23. 06:48
- 목차 들어가며. 이번 글에서는 Flink DataStream API 의 Async IO 에 대해서 알아보도록 하겠습니다. Async IO 는 Flink DataStream API 에서 제공하는 비동기처리를 위한 기술입니다. Java 가 기본적으로 제공하는 Future 모듈과 그 형식은 유사합니다. 그렇기 때문에 N 개의 Input 을 동시에 처리할 수 있습니다. Map, FlatMap 같은 Stateless Operator 는 event by event 형식으로 동기적인 순서로 데이터를 처리하는 반면, Async IO 를 통하여 1개 이상의 데이터를 효율적으로 처리할 수 있게 됩니다. 이 이미지처럼 Async IO 를 사용하게 되면 Async IO Operator 인 AsyncDataStream 은 ..
-
[Flink] JSON FileSink 만들어보기 (Row Format)Flink 2024. 2. 12. 10:12
- 목차 들어가며. 이번 글에서는 Flink DataStream Connector 중에서 File Sink 에 대해서 다루어보려고 합니다. 특히 JSON File 을 취급하는 File Sink 에 대해서 작성할 예정이구요. 관련된 구성요소들과 특징들에 대해서 작성해보겠습니다. Row-encoded Format. JSON 파일의 특징은 텍스트 기반의 파일이면서 Row 단위로 데이터를 저장합니다. 이는 csv 파일과 동일한 특징을 가집니다. FileSink Connector 는 인코딩을 수행하기 위해서 Row 또는 Bulk 기반의 포맷이 존재하며, JSON 파일은 Row 기반의 인코딩 포맷을 사용합니다. Stream Data 를 처리하는 Row Format FileSink 는 다음과 같이 구성됩니다. 0 부..
-
[Flink] Tumbling Time Window 알아보기 (TumblingEventTimeWindows)Flink 2024. 2. 12. 08:33
- 목차 들어가며. Tumbling Time Window 는 DataStream 를 시간 단위로 구분지을 수 있는 Windowing 방식입니다. Tumbling Window 는 fixed-size 와 non-overlapping 의 특징을 가집니다. 이를 그림으로 표현하면 아래와 같은데요. Tumbling Time Window 의 시간 기준은 분, 시간, 일에 구애받지 않고 자유롭게 설정할 수 있습니다. 그리고 고정된 시간 크기만큼 데이터 스트림을 작업 청크 단위로 나누어 관리합니다. Tumbling Time Window 예시. 아래 예시는 "2023-01-01 00:00:00" 시간부터 1시간 간격으로 5일간의 시각 정보를 생성하는 예시 프로그램입니다. Instant class 를 Event 로써 사용..
-
[Flink] Window AllowedLateness 알아보기 (Watermark)Flink 2024. 2. 12. 08:33
- 목차 들어가며. AllowedLateness 은 Window Operation 에서 사용되는 옵션입니다. AllowedLateness 는 이름 그대로 지연됨을 허용한다는 의미인데요. Flink 와 같은 이벤트 스트리밍 처리 도메인에서는 모든 이벤트들이 뒤섞인 순서로 유입된다는 대전제가 존재합니다. 네트워크 지연이 가장 큰 원인인데요. 데이터 소스에서 데이터가 생성된 순서대로 이벤트가 유입된다는 보장이 없습니다. 그래서 Window Operation 의 AllowedLateness 설정을 통해서 순서가 뒤섞인 이벤트들을 순서대로 처리할 수 있습니다. 위 이미지처럼 1, 2, 3, 4 의 순서대로 데이터는 생성됩니다. 하지만 복잡한 네트워크를 통하게 되면, Flink Application 으로 유입되는 ..
-
[Kryo] Kyro Serialization 알아보기Flink 2024. 2. 5. 07:39
- 목차 들어가며. Kryo 는 Java Serialization Library 입니다. Json, csv 와 같은 Text 기반의 Serialization 방식이 아닌 Binary Serialization 형식을 취하구요. Byte 데이터를 활용합니다. 그래서 File 저장이나 Network 통신의 레벨에서 주로 사용됩니다. 간단히 Kyro Serialization 실행해보기. 간단히 Kryo Serialization Framework 를 통해서 직렬화/역직렬화하는 방법에 대해서 알아보도록 하겠습니다. 저는 4.0.1 버전의 모듈을 사용할 예정입니다. // https://mvnrepository.com/artifact/com.esotericsoftware/kryo implementation group:..
-
[Flink] FileSource 알아보기 (json, csv, parquet, avro)Flink 2024. 2. 4. 19:53
- 목차 들어가며. Flink 는 File IO 를 위한 Source 로 FileSource class 를 가집니다. FileSource 는 File Read 를 위한 세가지 Factory Method 를 가지는데요. forRecordStreamFormat, forBulkFileFormat, forRecordFileFormat 에 해당하는 Method 들을 가집니다. 단순한 텍스트 파일부터 JSON, CSV 포맷의 파일과 Avro, Parquet 같은 Binary File 을 처리하는 FileSource 에 대해서 알아보려고 합니다. File Source 의 Fully Qualifed Name 은 org.apache.flink.connector.file.src.reader.FileSource 이구요. 1..
-
[Flink] KafkaSource Connector 알아보기Flink 2024. 2. 4. 15:08
- 목차 들어가며. 이번 글에서는 Flink DataStream 에서 사용할 수 있는 Kafka Source Connector 에 대해서 알아보도록 하겠습니다. Flink 의 Kafka Connector 를 구현한 Source Class 는 두가지가 있습니다. 하나는 FlinkKafkaConsumer 이고, 다른 하나는 KafkaSource 입니다. Flink 1.14 버전 이후부터 KafkaSource 가 추가되었구요. setBounded 설정을 통해서 Unbounded 가 아닌 Bounded 하게 Kafka Message 를 처리할 수 있고, 특정 Timestamp 부터 Message 를 조회하는 기능이 추가되었습니다. 참고로 Flink 1.17 버전 이후부터 FlinkKafkaConsumer 는 더..