Flink
-
[Flink] Stateless Transform Operator 알아보기 (Map, Filter, FlatMap)Flink 2024. 1. 25. 21:07
- 목차 들어가며. 이번 글에서는 Flink DataStream API 의 기본적인 Stateless Operator 들에 대해서 알아보려고 합니다. 살펴볼 대상은 Map, Filter, Flatmap Operator 입니다. 먼저 Stateless Operator 에 대해서 간단히 알아보도록 하겠습니다. Stateless Operator. Stream Processing Application 영역에서 Stateful 과 Stateless 라는 두가지 처리 기법이 존재합니다. Stateless 는 Event-by-Event 형태로 데이터를 처리하는 일반적으로 기법을 의미합니다. 즉, 단일 Event 하나를 처리하는데에만 집중합니다. 다른 표현으로는 과거의 상태가 현재의 Event 처리에 영향을 주지 않습..
-
Flink Window 이해하기Flink 2024. 1. 13. 10:18
- 목차 들어가며. Stateful 이란 ? 먼저 Flink DataStream 의 Window 에 대해서 알아보기 이전에 State 에 대한 이야기를 먼저 하도록 하겠습니다. State 를 활용함으로써 Stateless Stream Processing 과 Stateful Stream Processing 의 차별점이 발생합니다. Stateless Stream Processing 을 아래와 같습니다. stream.map(x -> x * 2) .filter(x -> x > 100) .flatMap((x, out) -> out.collect(NumberRange(0, x))) Stateless Stream Processing 의 대표적인 Transformation 은 Map, Filter, FlatMap 등이..
-
Flink StreamGraph 알아보기Flink 2024. 1. 11. 06:58
- 목차 들어가며. StreamGraph 는 Flink DataStream API 로 작성된 프로그램이 변환되는 최초의 모습입니다. 이를 다른 말로 실행 계획이라고 부르는데요. 일반적인 Java Program 이 컴파일되어 bytecode 가 되고, JVM 에서 실행되는 절차가 있듯이, Flink Program 또한 이러한 절차들이 존재합니다. 대략적인 절차를 작성해보면, 1. Flink DataStream API 로 작성한 Program 을 만든다. 2. 최초의 실행 계획인 StreamGraph 를 만든다. 3. StreamGraph 는 Flink Optimizer 에 의해서 JobGraph 가 된다. 4. JobGraph 는 Flink JobManager 에게 전달된다. 5. Flink JobMana..
-
Flink State 알아보기Flink 2024. 1. 10. 23:15
- 목차 들어가며. Flink 의 DataStream API 는 Stateful Stream Processing 을 지원합니다. 그럼 Stateful Stream Processing 은 무엇일까요 ? Stateful 과 Stream Processing 을 나눠서 생각해보겠습니다. Stream Processing 은 끊임없이 유입되는 데이터를 하나씩 처리하는 방식을 의미합니다. 예를 들기 위해서 간단한 psuedo code 를 작성해보았습니다. var source = [1,2,3,4,5,6,7,8,9, ...] source.filter(x -> x % 2) source.map(x -> x * 2) 위 예시에서 Filter 에 의해 홀수 자연수는 제외됩니다. 그리고 Mapper 에 의해서 필터링된 자연수들은..
-
Flink Watermark 알아보기Flink 2024. 1. 10. 22:18
- 목차 들어가며. Watermark 는 Checkpoint Barrier 와 같이 Flink Data Stream 을 흐르는 하나의 레코드입니다. Watermark 가 표현하는 정보는 오직 시간 밖에 없는데요. 특정 시각 정보를 담고 있는 Watermark 는 Data Stream 을 흐르게 됩니다. 아래의 이미지는 4개의 Event 가 Data Stream 을 흐르고 있구요. 마지막으로 Watermark 가 생성됩니다. Watermark 가 흐르게 되면서 Source 와 여러 Transformation Task 들을 거치고 마지막으로 Sink 에 도달하게 됩니다. 이 과정에서 각 Task 들은 도달한 Watermark 를 통하여 Watermark 시간까지의 Event 들은 모두 처리되었음을 알게됩니다..
-
Flink Checkpoint 알아보기Flink 2024. 1. 10. 21:41
- 목차 들어가며. Flink 의 Checkpoint 는 Flink Data Stream 이 어떻게 처리되고 있는지에 대한 상태를 저장하는 스냅샷입니다. Mapper, Filter, Window Operator 등이 끊임없이 흘러가는 Event 들을 처리합니다. Filter 에 의해서 불필요한 데이터는 제외되고, Mapper 에 의해서 데이터의 타입이 변경되거나 데이터의 내용이 바뀌기도 합니다. 그리고 Window Operator 에 의해서 데이터들의 평균값 또는 총 합계와 같은 집계 연산 또한 수행됩니다. 특정 시각에 각 Operator 들이 어떤 데이터를 처리하였고, 어떤 그 상태가 어떤지를 스냅샷으로 찍어 관리하게 됩니다. 이러한 기능을 Checkpoint 라고 부릅니다. 만약 Flink Strea..
-
[Flink] 바이너리 파일 실행하기 (Binary Execution File)Flink 2023. 12. 29. 06:31
- 목차 들어가며. 이번 글에서는 로컬 환경에서 Flink Jar 파일을 통해 Flink Cluster 를 구성하는 방법에 대해서 알아보려고 합니다. 먼저 실행을 위한 Jar 파일들을 다운로드를 받아야합니다. 아래 페이지에서 버전별 모든 Flink 관련 파일들을 다운로드할 수 있습니다. https://flink.apache.org/downloads/ Downloads Apache Flink® Downloads # Apache Flink # Apache Flink® 1.18.0 is the latest stable release. Apache Flink 1.18.1 # Apache Flink 1.18.1 (asc, sha512) Apache Flink 1.18.1 Source Release (asc, sh..
-
Flink KeyedStream 알아보기Flink 2023. 10. 11. 23:33
- 목차 소개. Flink 의 데이터 스트림들 중에서 KeyedStream 에 대해서 알아보려고 합니다. Flink 의 데이터 스트림은 아래와 같은 종류들이 있습니다. - DataStream - KeyedStream - WindowedStream KeyedStream 은 Hash Partitioning 으로 데이터들이 분산되는 형태의 데이터스트림인데요. 데이터들이 Upstream -> Downstream 으로 흐르는 과정에서 Hash Algorithm 을 통해서 적절히 분산됩니다. KeySelector 라는 java class 를 통해서 Hash Partitioning 을 구현할 수 있구요. 보통 데이터가 가지는 Primary Data 을 기준으로 Hash Partitioning 을 진행합니다. KeyS..
-
Flink Parquet FileSink 알아보기Flink 2023. 10. 4. 09:04
- 목차 소개. Flink 를 통해서 ETL 프로세스를 구성할 수 있습니다. FileSink 는 Extract-Tranform-Load 의 구분에서 Load 영역의 구성요소이며, 로컬 또는 원격의 파일시스템에 생성된 파일을 저장할 수 있습니다. 이번 페이지에서는 Parquet FileSink 에 대한 설명과 예시를 작성해보려고 합니다. 참고로 저는 java 11, Flink 1.13.6 환경에서 진행하도록 하겠습니다. Parquet. Parquet 파일에 대한 디테일한 설명을 원하신다면 아래 페이지에서 확인 가능합니다. https://westlife0615.tistory.com/50 Parquet 알아보기 - 목차 관련된 글 https://westlife0615.tistory.com/333 Avro Se..