전체 글
-
[Flink] Window AllowedLateness 알아보기 (Watermark)Flink 2024. 2. 12. 08:33
- 목차 들어가며. AllowedLateness 은 Window Operation 에서 사용되는 옵션입니다. AllowedLateness 는 이름 그대로 지연됨을 허용한다는 의미인데요. Flink 와 같은 이벤트 스트리밍 처리 도메인에서는 모든 이벤트들이 뒤섞인 순서로 유입된다는 대전제가 존재합니다. 네트워크 지연이 가장 큰 원인인데요. 데이터 소스에서 데이터가 생성된 순서대로 이벤트가 유입된다는 보장이 없습니다. 그래서 Window Operation 의 AllowedLateness 설정을 통해서 순서가 뒤섞인 이벤트들을 순서대로 처리할 수 있습니다. 위 이미지처럼 1, 2, 3, 4 의 순서대로 데이터는 생성됩니다. 하지만 복잡한 네트워크를 통하게 되면, Flink Application 으로 유입되는 ..
-
[Hadoop] MapReduce Combiner 알아보기Hadoop 2024. 2. 11. 10:26
- 목차 Combiner 란 ? Combiner 의 내부 동작은 Reducer 와 유사합니다. 다만 차이가 있다면, 실행되는 노드의 위치입니다. Combiner 는 Mapper 가 위치한 노드에서 실행됩니다. 그래서 Combiner 는 보통 최적화 기법으로 사용되는데요. Reducer 가 수행해야할 작업을 Combiner 단계에서 미리 처리하여 Shuffling 되는 데이터의 양을 줄일 수 있습니다. 유명한 예시인 Word Count 관련 MapReduce 를 예로 들면, 중복이 많은 Word 에 대한 Count 를 계산할 때에 Combiner 가 존재하지 않는다면 모든 Key-Value Pairs 는 Shuffling 의 대상이 됩니다. 이 과정에서 Combiner 는 중복적인 Word 를 일차적으로 ..
-
[Kafka] Transaction Coordinator 알아보기Kafka 2024. 2. 7. 23:02
- 목차 들어가며. Kafka Consumer 입장에서 Group Coordinator 가 존재하듯이, Kafka Producer 는 Transaction Coordinator 가 존재합니다. Kafka Producer 의 Transaction 처리를 위해서 특정 Broker 는 Transaction Coordinator 로써 동작하게 됩니다. Transaction Coordinator 는 어떻게 결정될까 ? 먼저 Transactional Producer 에 의해서 Transaction 이 최초로 실행되면, Transaction State 를 기록하기 위한 __transaction_state Topic 이 생성됩니다. Transaction Coordinator 는 하나의 Broker 입니다. 아래 이미지..
-
[ClickHouse] MergeTree 테이블 Backup 하기 ( clickhouse-backup )Database/Clickhouse 2024. 2. 6. 20:27
- 목차 들어가며.이번 글에서는 Altinity clickhouse-backup 이미지를 기반으로 ClickHouse 의 MergeTree 테이블을 Backup 하는 방법에 대해서 알아봅니다. https://hub.docker.com/r/altinity/clickhouse-backup https://hub.docker.com/r/altinity/clickhouse-backup hub.docker.comhttps://github.com/Altinity/clickhouse-backup GitHub - Altinity/clickhouse-backup: Tool for easy backup and restore for ClickHouse® using object storage for backup files.To..
-
[Vitess] vtctldclient AddCellInfo 명령어 알아보기Database/Vitess 2024. 2. 5. 07:39
- 목차 들어가며.이번 글에서는 vtctldclient 의 AddCellInfo 명령어에 대해 알아보겠습니다.AddCellInfo 는 Vitess 클러스터의 Topology Server에 새로운 셀(Cell) 정보를 추가하는 명령어입니다.Cell 은 Vitess 클러스터에서 논리적인 그룹을 나타내며, tablet 들이 위치할 수 있는 영역입니다. 예를 들어, 총 8개의 vttablet 들이 존재할 때에 4개는 Cell1, 나머지 4개의 vttablet 은 Cell2 로 설정할 수 있습니다. 아래의 이미지와 같이 물리적인 vttablet 을 4개씩 그룹지어 논리적 단위로 나눌 수 있게 됩니다. Topology Service ( Etcd ).일반적으로 Vitess 의 Topology Service 는 E..
-
[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 는 더..
-
[Kafka] Rebalance 가 발생하는 경우들 알아보기 ( Rebalance Scenario )Kafka 2024. 2. 4. 15:08
- 목차 들어가며. 이번 글에서는 Rebalance 가 발생하는 여러가지 경우들에 대해서 자세히 알아보려고 합니다. 사용하게 될 Consumer 예제 코드는 아래와 같습니다. kafka-clients 2.8.1 모듈을 사용하였구요. CustomRebalanceListener 추가하여 Rebalance 가 발생하는 상황을 출력하도록 Consumer 프로그램을 작성하였습니다. package com.westlife.consumers; import org.apache.kafka.clients.consumer.*; import org.apache.kafka.common.*; import org.apache.kafka.common.serialization.*; import java.time.*; import jav..
-
[Kubernetes] QoS 알아보기 (Quality of Service)Kubernetes 2024. 2. 4. 08:54
- 목차 들어가며.이번 글에서는 쿠버네티스의 QoS 에 대해서 알아봅니다. QoS 는 Quality of Service 의 약자인데요."서비스의 품질" 와 같이 해석할 수 있지만, 쿠버네티스의 관점에서 설명하자면 Pod 의 생존을 보장하는 정도를 나타냅니다.( 구체적으로는 Pod 가 Eviction 되는 가능성을 낮추는 정도인데요. 아래에서 자세히 설명하도록 하겠습니다. )Pod 는 특정 Node 에 스케줄링되어 실행되고, Pod 의 내부에서 컨테이너들이 실행됩니다.컨테이너의 갯수는 하나 또는 그 이상일 수 있습니다. (일반적으로 1개의 Pod 는 1개의 컨테이너를 가집니다.)컨테이너는 CPU 와 메모리에 대해서 사용량을 제한할 수 있는데요. 이는 request 와 limit 나뉘어..