반응형

개발/kafka 9

[kafka] rack awareness | rackAssignment 옵션 (+네이버의 파티션 할당 전략: RackAwareRangeAssignor)

카프카인액션 6장 중에..빅데이터 개념에 익숙하거나 이전에 하둡으로 작업해 본 적이 있는 사람들은 카프카를 알아가면서 랙 어웨어니스 rack awareness(머신이 호스트되는 물리적 서버 렉을 인지하는 것)나 파티션 partition 같은 친숙한 용어를 볼 수 있다. 카프카에는 파티션의 에플라카가 별도의 랙에 물리적으로 존재하도록 하는 랙 어웨어니스 기능이 있다.... 자체 카프카 클러스터를 설정할 때는 또 다른 클러스터인 어파치 주키퍼를 알고 있어야 한다.   Kafka rack-awareness1개의 Rack에 다수의 브로커를 집중 하는 것은 위험하다다수의 Rack에 분산하여 브로커 옵션(broker.rack) 설정 및 배치한다파티션 할당 및 레플리케이션 동작시 특정 브로커에 몰리는 현상을 방지한다..

개발/kafka 00:50:54

역압(back pressure)을 처리하는 애플리케이션 (kafka/spark)

카프카인액션 5장을 읽다가, 아래 글을 읽으면서 찾아본 역압 back pressure의 증가를 처리하는 애플리케이션의 뜻을 찾아봤다. ...컨슈머를 항상 가동하고 실행할 필요가 없다. 이러한 일정한 데이터 흐름이나 볼륨으로 인한 역압 back pressure의 증가를 처리하는 애플리케이션을 개발할 수는 있지만, 컨슈머는 브로커의 리스너가 아니라 데이터를 가져온다 pulling는 점을 알아야 한다.  Backpressure(배압)은 무엇인가?파이프를 통한 유체 흐름에 반하는 저항, 힘을 말한다. 액체나 증기가 관을 통해 배출 될 때, 유체가 흐르는 방향과 반대 방향으로 작용하는 저항 압력이다. 흔히 ‘역압’ 이라고도 부른다. 배압이 생기는 이유는 마찰이나 수두압, 탱크의 내압등이 이유가 되며 이를 엔지니어..

개발/kafka 2025.01.18

[kafka] producer interceptor

ProducerInterceptor는 Kafka 클러스터에 메시지가 발행되기 전 프로듀서에서 수신한 레코드를 가로채거나 변경(mutate)할 수 있도록 해주는 플러그인 인터페이스입니다.  public class MyProducerInterceptor implements ProducerInterceptor { private final SomeBean bean; public MyProducerInterceptor(SomeBean bean) { this.bean = bean; } @Override public void configure(Map configs) { } @Override public ProducerRecord onSend(ProducerRec..

개발/kafka 2025.01.12

[kafka] 소비자 그룹 (Consumer Group)

Apache Kafka에서 소비자 그룹(Consumer Group)이란?소비자 그룹은 Kafka 소비자들이 함께 작업하여 토픽의 이벤트를 병렬 처리할 수 있도록 해줍니다.소비자 그룹 내의 소비자들은 토픽 또는 토픽 세트의 파티션을 나누어 할당받아 이벤트 처리를 병렬화할 수 있습니다.소비자는 자신을 소비자 그룹 이름으로 식별합니다토픽에 게시된 각 메시지는 구독 중인 각 소비자 그룹의 소비자 인스턴스 중 하나에 전달됩니다.소비자 인스턴스는 서로 다른 프로세스에서 실행되거나 다른 머신에 분산될 수 있습니다.모든 소비자 인스턴스가 동일한 소비자 그룹에 속할 경우이는 전통적인 큐(queue)처럼 동작하며, 소비자들 간에 부하를 균등하게 분산합니다.모든 소비자 인스턴스가 서로 다른 소비자 그룹에 속할 경우이는 발행..

개발/kafka 2025.01.05

[kafka] log compaction | log tail | log head

log는 head와 tail을 가지고 있다. compacted log의 head는 전통적인 카프카 로그와 같다. 새로운 레코드들이 head의 끝에 append 된다. 모든 log compaction은 log의 tail에서 작동한다. 오직 tail만이 compact된다.  Kafka 로그 압축(Log Compaction)은 소비자가 압축된 토픽(compacted topic)에서 자신의 상태를 복구할 수 있도록 도와줍니다. 이 과정에서 메시지의 순서는 절대로 변경되지 않으며, 일부 메시지들은 삭제됩니다. 또한, 메시지의 파티션 오프셋(partition offset)은 절대로 변경되지 않습니다.로그 구조Kafka 로그는 헤드(head)와 꼬리(tail)로 구성됩니다.헤드 (Head)새로운 메시지는 항상 헤드 ..

개발/kafka 2025.01.04

[kafka] producer message key = 메시지 코디네이트(Message Coordinate)

메시지 코디네이트(Message Coordinate)란?메시지 코디네이트는 Kafka와 같은 분산 메시징 시스템에서 메시지의 위치와 흐름을 조정 및 관리하는 작업을 의미합니다. 이를 통해 메시지가 올바른 파티션에 분배되고, 처리 순서와 일관성이 유지되며, 효율적인 데이터 처리가 가능해집니다.  이 예에서는 프로듀서가 데이터를 파티션이 두 개인 토픽으로 전송합니다.키(key)가 null인 경우:데이터는 라운드 로빈(round-robin) 방식으로 파티션에 전송됩니다.이는 부하를 균등하게 분산(load balancing)하기 위한 방법입니다.여기서 null 키는 프로듀서 메시지에 키가 없는 경우를 나타냅니다.키(key)가 존재하는 경우:키가 값을 가지며, 이 값은 다양한 유형일 수 있습니다.Kafka 프로듀..

개발/kafka 2025.01.04

[kafka] Kafka Connect High-Level Overview + Cluster and Distributed Architecture

Kafka Connect High-Level Overview  1 Kafka Connector Source (클러스터에서 실행됨)는 외부 소스에서 데이터를 가져옵니다.2 Kafka Connector Source는 수집된 데이터를 Kafka 클러스터로 전송합니다 (이 단계에서 프로듀서 역할을 수행).3a. Kafka 클라이언트 애플리케이션(소비자로 작동)이 Kafka 클러스터에서 데이터를 읽습니다.3b. Kafka 클라이언트 애플리케이션(이제 프로듀서로 작동)이 처리된 데이터를 Kafka 클러스터로 다시 보냅니다.4 Kafka Connector Sink (클러스터에서 실행됨)는 Kafka 클러스터에서 데이터를 읽습니다 (이 단계에서 소비자 역할을 수행).5 Kafka Connector Sink는 읽은 데이..

개발/kafka 2025.01.03

[kafka] 토픽 생성 및 리스트 확인 + producer, consumer 메시지 전달 (mac m1)

1. kinaction_helloworld 토픽 만들기bin/kafka-topics.sh --create --bootstrap-server localhost:9094 --topic kinaction_helloword --partitions 3 --replication-factor 3   2. 토픽 확인하기 bin/kafka-topics.sh --list --bootstrap-server localhost:9094  3. 토픽 세부 정보 조회 bin/kafka-topics.sh --bootstrap-server localhost:9094 --describe --topic kinaction_helloword   4. kafka 프로듀서 콘솔 명령bin/kafka-console-producer.sh --boo..

개발/kafka 2024.12.14

[kafka] kafka, zookeeper, server 시작하기 (mac m1)

1. kafka 파일 다운로드 https://kafka.apache.org/quickstart Apache KafkaApache Kafka: A Distributed Streaming Platform.kafka.apache.org  2. 카프카 바이너리 압축 풀기tar -xzf kafka_2.13-3.9.0.tgzmv kafka_2.13-3.9.0 ~/cd ~/kafka_2.13-3.9.0export PATH=$PATH:~/kafka_2.13-3.9.0/bin  3. 주키퍼 서버 시작하기 cd ~/kafka_2.13-3.9.0bin/zookeeper-server-start.sh config/zookeeper.properties 4. 수동으로 클러스터 생성 및 구성cd ~/kafka_2.13-3.9.0cp..

개발/kafka 2024.12.14
반응형