Kafka
-
[Kafka Connect] OffsetStorageWriter 알아보기Kafka/kafka Connect 2025. 1. 23. 06:32
- 목차 들어가며.Kafka Connect 는 여러 개의 Worker 들이 실행되고, 각 Worker 들은 한개 이상의 Task 를 실행시키게 됩니다. Kafka Connect 는 기본적으로 3개의 Internal Topic 을 생성하게 되는데, Config/Status/Offset 이라고 불리는 토픽을 관리합니다. 특히 Source Task 는 Kafka Connect Offset Topic 에 자신이 조회한 데이터의 Offset 정보를 저장하게 되는데요. 이 과정에서 OffsetStorageWriter 라는 클래스가 사용됩니다. OffsetStorageWriter 클래스는 org.apache.kafka.connect.storage.OffsetStorageWriter.java 에 위치하는 클래스이고, ..
-
[Kafka-Connect] Confluent S3SinkConnector flush.size 알아보기Kafka/kafka Connect 2025. 1. 9. 06:51
- 목차 들어가며.이번 글에서는 Confluent S3SinkConnector 의 flush.size 설정에 대해서 알아봅니다. flush.size 는 Connector 가 데이터를 Flush 하기 위한 주기를 제어합니다. 이 주기는 레코드 갯수 기반으로 동작하며, flush.size 만큼 레코드가 모였을 때에 S3 로 업로드하게 됩니다. https://docs.confluent.io/kafka-connectors/s3-sink/current/overview.html#exactly-once-delivery Amazon S3 Sink Connector for Confluent Platform | Confluent DocumentationThe Amazon S3 Sink connector exports d..
-
[Kafka Producer] max.in.flight.requests.per.connection 알아보기Kafka/Kafka Producer 2024. 9. 13. 06:47
- 목차 Record, Batch, ProduceRequest 의 관계.Kafka Producer 는 send() 라는 함수를 사용하여 개별적인 Record 를 Produce 할 수 있게 설계되어 있습니다.그래서 사용자의 레벨에서는 단일 Record 를 처리하는 것처럼 노출됩니다.하지만 그 내부에서는 Batch 단위로 Record 들이 모이게 되고, 실질적으로 Producer 가 Broker 에게 데이터를 전송할 때에는 Batch 단위로 전송되게 됩니다.이와 관련된 설정으로 batch.size, linger.ms 등이 사용됩니다. batch.size 설정은 하나의 Batch 를 구성하는 최대 용량 기준이며, linger.ms 는 하나의 Batch 를 생성하는 시간적인 기준입니다.일반적으로 linger.m..
-
[Kafka Consumer] generation id 와 epoch 관계 알아보기Kafka/Kafka Consumer 2024. 9. 13. 06:47
- 목차 들어가며.Kafka Consumer 는 group.id 를 기준으로 하나의 그룹을 형성합니다.흔히 Consumer Group 이라고 부르는 이러한 개념이 바로 Kafka Consumer 들의 그룹입니다.여기에서 하나의 중요한 개념 중의 하나가 Generation 또는 Epoch 로 표현되는 세대에 대한 개념입니다. 먼저 Generation 과 Epoch 가 어떤 방식으로 사용되는지 예시들을 알아보도록 하겠습니다.Kafka 의 __consumer_offsets Topic 에 Consumer Group 과 관련된 데이터들이 기록됩니다.만약 group.id 가 "my-consumer-group3" 이라는 값으로 실행된 Consumer 의 경우에 아래와 같은 형식의 레코드가 추가됩니다. key : {..
-
[Kafka Consumer] consumer group 과 OffsetFetch API 알아보기Kafka/Kafka Consumer 2024. 9. 13. 06:47
- 목차 들어가며.https://kafka.apache.org/protocol.html#The_Messages_OffsetFetch Apache KafkaApache Kafka: A Distributed Streaming Platform.kafka.apache.org Kafka 의 API 들 중에서 OffsetFetch API 는 특정 Consumer Group 의 Committed Offset 을 조회할 수 있는 역할을 수행합니다.아래의 정보는 OffsetFetch API Request 의 형식입니다.member_id 나 require_stable 와 같은 부가적인 요소가 존재하긴 하지만,기본적으로 group_id 와 topic/partition 정보를 기반으로 특정 Consumer Group 의 Co..
-
[Kafka Consumer] ListOffsets API 알아보기Kafka/Kafka Consumer 2024. 9. 13. 06:46
- 목차 ListOffsets API.https://kafka.apache.org/protocol.html#The_Messages_ListOffsets Apache KafkaApache Kafka: A Distributed Streaming Platform.kafka.apache.org Kafka 는 ListOffsets API 를 통하여 특정 Topic Partition 의 Offset 정보를 조회할 수 있습니다.ListOffsets API 의 활용 시나리오는 아래와 같습니다.1. Partition 의 시작 Offset 조회2. Partition 의 마지막 / 최신의 Offset 조회3. Partition 의 특정 시간대의 Offset 조회와 같은 방식으로 Topic/Partition 의 특정 Offs..
-
[S3 Sink Connector] rotate.schedule.interval.ms 알아보기Kafka/kafka Connect 2024. 9. 7. 10:09
- 목차 들어가며.S3 Sink Connector 는 flush.size 라는 File Write 트리거 조건을 설정하는 옵션이 존재합니다.일정 갯수 이상의 레코드가 쌓이게 되면 이는 S3 로 하나의 Object File 로써 업로드됩니다.뿐만 아니라 S3 Sink Connector 는 rotate.schedule.interval.ms 라는 또 다른 File Write 트리거 조건이 존재합니다.이는 특정 시간 간격마다 강제로 파일을 생성하고 S3 Bucket 으로 해당 파일을 업로드해야하는 조건을 의미합니다. 이번 글에서는 rotate.schedule.interval.ms 과 Output File 생성의 관계에 대해서 알아보겠습니다. https://westlife0615.tistory.com/1058 S..
-
[S3 Sink Connector] flush.size 와 Output File 알아보기Kafka/kafka Connect 2024. 9. 7. 10:09
- 목차 들어가며.이번 글에서는 Kafka Topic -> S3 로 이어지는 Kafka Connector 의 S3 Sink Connector 의 flush.size 설정에 대해서 알아보려고 합니다.S3 Sink Connector 는 이름처럼 S3 의 특정 버킷으로 파일을 저장하는 커넥터입니다.데이터소스로 사용된 특정 Kafka Topic 의 레코드들을 파일 형식으로 S3 Bucket 에 저장됩니다.이 과정에서 flush.size 이라는 수치값을 설정할 수 있구요.flush.size 는 곧 하나의 파일을 결성하는 레코드의 갯수를 의미합니다.즉, flush.size 마다 레코드들이 모여 하나의 파일을 생성하고 이 파일들이 S3 Bucket 에 저장되는 구조입니다. Minio 실행.먼저 실습을 위해서 Kafk..
-
[Kafka Connect] plugin.path 와 PluginClassLoader 알아보기Kafka/kafka Connect 2024. 9. 7. 10:08
- 목차 plugin.path 란 ?plugin.path 에 대해서 알아보기 이전에 간단히 Connector 와 Task 그리고 Worker 의 관계에 대해서 알아보겠습니다.Kafka Connect 는 작업 단위인 Connector 를 여러 개의 Task 로 나누어 분산 처리할 수도록 돕습니다.Spark 에 비유하자면 아나의 Driver Application 이 여러개의 Job, Stage, Task 로 분리되어 실행되듯이, Kafka Connect 에서는 Connector 를 기준으로 여러개의 Task 가 생성됩니다.그리고 각 Task 들은 Worker 로 분배되어 하나의 Worker 가 할당된 Task 를 처리하게 됩니다. 일반적으로 Connector 는 어떤 Connector Java Class ..
-
[Kafka Consumer] assign 알아보기Kafka/Kafka Consumer 2024. 8. 23. 07:43
- 목차 Kafka Consumer assign 과 subscribe.Kafka Consumer 는 subscribe 와 assign 함수를 통해서 데이터 소비를 수행할 Topic 과 Partition 을 결정할 수 있습니다.가장 일반적인 방법은 subscribe 함수입니다.subscribe 함수를 사용하면 지정된 Topic 과 Partition 에 대해서 동일한 group.id 를 가지는 Consumer Group 이 데이터 소비를 수행합니다.이 과정에서 자동으로 Partition Assigning 과 Rebalancing 이 발생합니다. 반면, assign 함수를 사용하는 경우에는 subscribe 함수가 지원했던 여러가지 자동 기능이 없어집니다.먼저 Consumer Group 이 사용되지 않고, 개..