전체 글
-
[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 나뉘어..
-
[Kafka] Kafka Rebalance Protocol 알아보기 ( JoinGroup, LeaveGroup )Kafka 2024. 2. 4. 07:53
- 목차 Rebalance 란 무엇일까요?먼저 Rabalance 를 어휘적으로 살펴볼려고 합니다.Rebalance 는 Unbalance 인 상태를 해결하는 행위입니다.Partition 과 Consumer 사이의 관계가 Unbalance 상태가 될 수 있습니다.Unbalance 의 원인 제공이 Partition 일 수도 있고, Consumer 일 수도 있겠죠 ?Partition 의 갯수가 늘어나거나, 어떤 Consumer 가 먹통이 될 수 있죠.이러한 경우에 Partition 과 Consumer 사이의 적절한 매칭 관계에 문제가 발생하고 이러한 상태가 Unbalance 상태입니다.그리고 Kafka Broker ( 특히, Group Coordinator ) 는 Unbalance 를 감지하여 Rebalance..
-
[Hadoop] MapReduce Configuration 알아보기Hadoop 2024. 2. 3. 11:32
- 목차 들어가며. 이번 글에서는 Configuration File 을 JVM 데이터로 Deserialization 하는 내용에 대해서 다루어보려고 합니다. 여타 Java Application 은 Resources 하위의 Configuration 파일 내용을 Application 내부에서 사용하곤 합니다. Hadoop 의 MapReduce 에서 org.apache.hadoop.conf.Configuration 의 여러 사용법에 대해서 다루어보도록 하겠습니다. Deserialize Configuration. 먼저 configuration.xml 파일을 작성해보겠습니다. User 데이터를 표현하는 XML 을 구성하였구요. name, age, gender, full-desc 4개의 key-value 로 구성됩..
-
[KinD] KinD Cluster 로 Docker Image 업로드하기 (kind load docker-image)Kubernetes 2024. 2. 3. 09:12
- 목차 들어가며.이번 글에서는 KinD 로 생성된 k8s Cluster 내부로 Docker Image 를 Upload 하는 방법에 대해서 알아보도록 하겠습니다.KinD Cluster 는 Docker Hub 나 Harbor, ECR 등의 원격 이미지 레지스트리가 아닌 로컬에서 테스트 중인 도커이미지를 취급하는 경우가 존재합니다.이 과정에서 KinD 의 image Upload 명령어를 통해서 로컬의 도커 이미지를 KinD Cluster 내부로 업로드할 수 있습니다. KinD Cluster 생성하기.아래 링크는 KinD 로 k8s Cluster 를 실행시키는 방법에 대한 전반적인 설명을 다룹니다.https://westlife0615.tistory.com/407 KinD 알아보기.- 목차 소개. KinD 는 ..
-
[Java NIO] NIO 는 어떻게 동작할까 ? (DMA, Kernel Space)Language/Java 2024. 1. 31. 06:11
- 목차 들어가며. 이번 글에서는 Java NIO 가 어떻게 동작하는지 깊이있게 다루어보려고 합니다. 앞으로 Java NIO 와 관련된 글들을 이어서 작성할 예정입니다. DMA Controller. 먼저 DMA Controller 에 대해서 알아보도록 하겠습니다. 컴퓨터를 아주 단순히 표현하면 아래 그림과 같이 표현될 수 있습니다. CPU 와 Memory 그리고 Disk 로 표현될 수 있습니다. 좀 더 나아가서 NIC 같은 네트워크 인터페이스가 추가될 수 있죠. 그래서 Disk 에 존재하는 실행파일은 메모리로 옮겨지고, CPU 는 Memory 로 적재된 실행파일의 코드를 한줄 한줄 실행하며 컴퓨터는 동작합니다. 또한 Network Card 를 통해서 유입되는 데이터를 읽어들이고, 다시 데이터를 전송하며 ..
-
[Kafka] API Version 알아보기 ( Protocol )Kafka 2024. 1. 31. 06:11
- 목차 들어가며.이번 글에서는 Kafka 에서 클라이언트와 브로커가 통신을 수행하기 위해서 사용되는 API Version 에 대해서 알아보려고 합니다.일반적으로 Broker 의 버전과 API Version 은 동일하게 사용하는 것이 권장됩니다.하지만 API Version 을 명시하지 않아도 Kafka Wire Protocol 상에서 적절한 API Version 을 추론할 수 있습니다.그래서 Kafka Client 모듈을 사용할 때에 API Version 을 명시하지 않아도 Consumer 와 Producer 를 쉽게 사용할 수 있죠. Confluent Version & Kafka Version.아래 페이지는 Confluent 의 버전과 카프카 버전에 대한 정보를 제공합니다.https:..