[Kafka] 간단한 Producer/Consumer 실습 (Java)
·
Data Engineering/Kafka
이번 글에서는 위 그림과 같이 간단한 작업을 실습해볼 예정이다. Producer와 Consumer는 Java를 이용해 구현했으며, Gradle을 사용했다. Java Project 생성하는 법은 이번 글에서는 생략했다. 코드를 작성하기 앞서 build.gradle에 의존성을 추가해야한다.implementation 'org.apache.kafka:kafka-clients:3.5.1' producerTest.javaimport org.apache.kafka.clients.producer.KafkaProducer;import org.apache.kafka.clients.producer.ProducerRecord;import org.apache.kafka.clients.producer.Producer;import..
[Kafka] Apache Kafka 설치
·
Data Engineering/Kafka
이번 글에서는 Apache Kafka 설치 방법에 대해 소개할 예정이다. Kafka 3.9.0 버전을 사용했으며, KRaft 모드를 사용할 예정이다. 큰 목차는 다음과 같다.1. 환경2. Java 설치3. Kafka 설치4. Kafka Cluster ID 설정5. Kafka 설정 파일 편집6. Kafka 스토리지 초기화7. Broker 실행8. Topic 생성9. Producer/Consumer 테스트 환경설치를 위해 VM 3대를 사용하였으며, 환경은 다음과 같다.OSUbuntu 20.04Javaopenjdk-11Kafka3.9.0  Java 설치 Kafka를 실행하려면 Java Runtime Environment(JRE)가 필요하기 때문에 OpenJDK 11을 설치한다.sudo apt updatesud..
[Kafka] Zookeeper와 KRaft(Kafka Raft)
·
Data Engineering/Kafka
이번 글에서는 Zookeeper와 이를 대체하기 위해 등장한 KRaft에 대해 소개 할 예정이다. 본 글의 목차는 다음과 같다.1. Apache ZooKeeper 개요      1.1 Zookeeper 앙상블      1.2 Zookeeper Read & Write2. Zookeeper와 Kafka3. Zookeeper의 문제점4. KRaft(Kafka Raft) 모드5. 마무리 Apache ZooKeeper 개요 Zookeeper는 분산 애플리케이션을 위한 분산 코디네이션 서비스로, 개별 시스템을 관리 및 조율하며 고가용성을 보장한다.분산 환경에서 클러스터 메타데이터를 관리하고 노드 간의 협업을 돕는 핵심 역할을 수행한다. Zookeeper 앙상블  Zookeeper는 여러 서버로 구성된 앙상블 형태로..
[Kafka] Kafka 데이터 흐름 이해하기: Partition과 Offset
·
Data Engineering/Kafka
이번 글에서는 Kafka의 Partition과 Offset에 대해 공부한 내용을 정리하려고 한다. 본 글의 목차는 다음과 같다.1. Events, Streams, and Topics2. Partition3. Partitioning4. Partition 복제5. Consumer의 데이터 읽기 방식: Pull6. Commit/Offset Events, Streams, and Topics `Partition`에 대해 알아보기 전에, Event, Stream 그리고 Topic에 대해 먼저 알아보자 `Event`는 데이터의 단위이다. 이는 특정 작업이나 상태 변경을 나타낸다.`Stream`은 Kafka에서 연속적으로 흐르는 Event들의 집합이다.`Topic`은 데이터를 구분하기 위한 단위로 events stre..
[Kafka] Apache Kafka 개요
·
Data Engineering/Kafka
이번 글에서는 Apache Kafka에 대해 간단히 소개할 예정이다. 본 글의 목차는 다음과 같다.1. Kafka 등장 배경2. What is Kafka3. Kafka Architecture4. Pub/Sub 모델 1. Kafka 등장 배경 `Kafka`에 대해 알아보기 전, 어떻게 `Kafka`가 등장했는지 알아보자 초기 Linkedin 운영 시에는 단방향 통신을 통해 연동했으며, 아키텍처가 복잡하지 않아 운영에 어려움이 없었다. 하지만, 시간이 지날수록 source, target application의 개수가 많아져 아키텍처가 거대해짐에 따라 데이터를 전송하는 라인이 위 그림과 같이 많이 복잡해졌다. 또한, 한쪽에 장애가 생기면 다른 한 쪽에도 전달되는 문제가 발생해 유지 및 보수가 어려워지면서 관리..