데이터 엔지니어링/Kafka
-
[Kafka 원리]Kafka Consumer 동작 원리 이해하기 (Consumer group, rebalancing, commit_offset, option, fetch 튜닝, message ordering(순서))데이터 엔지니어링/Kafka 2022. 11. 6. 21:54
목차 consumer란? consumer offset Consumer는 어떤 메시지를 읽을 수 있을까? consumer group Consumer 메세지 읽기 옵션 Consumer Rebalance Consumer Group간 Rebalancing 옵션 그러면 언제 언제 Rebalancing 될까? Consumer Message Ordering(메시지 순서 조작하기) Consumer란? broker 로컬에 저장 되어있는 메시지(log Segment)에서 메시지 내용을 가져와 사용하는 사용자 역할을 하는 애플리케이션이다. 컨슈머는 반드시 컨슈머 그룹에 속해 있어야 한다. 컨슈머 그룹은 하나 이상의 컨슈머가 존재한다. consumer를 구성할 때 bootstrap.servers, group.id, key.d..
-
[Kafka 원리] replication-factor, ISR , 리더 에포크, 가용성 알아보기데이터 엔지니어링/Kafka 2022. 11. 6. 10:42
목차 replication factor leader-follower ISR(In Sync Replica) Push방식이 아닌 Pull방식 hive water mark leader epoch Replication factor kafka에서는 cluster를 구성하고 고가용성을 유지 하기 위해서 replication(복제)을 해야합니다. 복제를 얼마나 할 것인지에 대해 topic을 생성할 때 설정을 할 수 있습니다. 아래 그림과 같이 topic 1 을 복제를 2번 한다고 하고, topic2를 복제를 3번한다고 하면 아래와 같이 복제를 하게 됩니다. 복제는 broker가 장애 시에 다른 broker에서 메세지를 produce 및 consume합니다. Leader - Follower 여기서 Producer가 진..
-
[Kafka 원리] Kafka Broker 메세지 저장 방식Cluster(broker), partition, segment 기본 개념 및 옵션데이터 엔지니어링/Kafka 2022. 11. 5. 14:42
목차 Broker, kafka cluster란? Broker란? Kafka Cluster란? Partition이란? Partition이 메시지 보관하는 법 Partition이 필요한 이유는? 병목현상이 왜 일어 날까? Partition 수 늘리기 Partition 수 늘리는 것이 무조건 좋은 방법일까? Partition replica 기준 Segment란? rolling 및 retention segment 주요 옵션 Broker Message Queue시스템에서는 message Produce와 Consume 하기 위해 message를 관리하거나 보관해주는 서버가 필요한데 그것이 Kafka에서는 Broker라고 부른다. Kafka Cluster Kafka에서는 메시지 분산처리 플랫폼 이기 때문에 분산처리가..
-
[Kafka 원리]Kafka Producer 처리 방식 이해하기(feat. 튜닝, batch, linger, acks, compression, message send주기, message 순서 보장)데이터 엔지니어링/Kafka 2022. 11. 5. 14:38
목차 Producer란? Producer Message 전송 원리 이해하기 Producer Message 전송 완료 listener 원리 이해하기 Batch 처리(feat. batch.size, linger.ms) Messge Compression(메세지 압축) Message send Retry 원리 이해하기 Message 순서 보장 알아보기(feat. idempotence, max.in.flight.requests.per.connection) Producer란? Producer는 kafka broker에 메세지를 보내는 client이다. record라는 형식으로 데이터를 만들어 보낼 수 있다. record는 avro, json형식으로도 보낼 수 있다. record는 byte형식으로 serialize 되..
-
[Kafka] KsqlDB 실습하기 - create Kstream, Ktable데이터 엔지니어링/Kafka 2022. 7. 31. 17:14
필수 개념 이해와 실습 환경 설정 KsqlDB 필수 개념을 숙지 하지 않으신 분께서는 아래의 링크로 들어가 확인후 다시 와서 봐주시기 바랍니다. [kafka] KsqlDB란? - Ksqldb 주요 개념(push, pull query)과 kafka에서 사용하는 Streaming Processing 개념(kstream, kta KSQLDB를 알기 전에 알아야 할 것 - Batch Processing vs Stream Processing Ksql은 Streaming processing을 하기 위한 툴입니다. 그래서 Batch Processing하고 Stream Processing의 차이점을 알아야 하는데요. 아.. magpienote.tistory.com 작업환경은 이해 하지 않아도 무관하나 먼저 작업환경을 ..
-
[Kafka] ksqldb 실습환경 구축해보기데이터 엔지니어링/Kafka 2022. 7. 31. 16:50
KSQLDB 실습 환경 KsqlDB를 실습하면서 배워보는 시간을 가져볼 예정입니다. 먼저 stream이 있어야 하기 때문에 stream을 하나 만들어 실습을 진행하겠습니다. 먼저 진행하기에 앞서 제가 사용하게 될 아키텍처를 설명 하자면 아래와 같습니다. Kafka클러스터를 구축 하였고 Broker서버 1개 order라는 토픽을 만들어 메세지를 주고 받겠습니다. KsqlDB는 클러스터 외에 서버를 구축해야 하므로 외부에 설치를 진행하도록 하고 Ksql-cli로 KsqlDB에 접속하여 조작을 할것입니다. 서버를 만들어서 사용하면 좋겠지만, 여건이 안되므로 Docker파일을 작성하여 진행하였습니다. 위의 그림처럼 만들기 위해 설정을 해놨습니다. 아래를 복사해서 사용하시면 되겠습니다. version: '3' s..
-
[kafka] KsqlDB란? - Ksqldb 주요 개념(push, pull query)과 kafka에서 사용하는 Streaming Proces데이터 엔지니어링/Kafka 2022. 7. 31. 11:39
KSQLDB를 알기 전에 알아야 할 것 - Batch Processing vs Stream Processing Ksql은 Streaming processing을 하기 위한 툴입니다. 그래서 Batch Processing하고 Stream Processing의 차이점을 알아야 하는데요. 아래와 그 차이점을 설명 해 놨습니다. 가장 큰 차이점은 데이터가 무한하다는 가정을 한다는 것인데, 이 부분이 KSQL과 기본 SQL에 차이가 나는 부분입니다. KsqlDB란? KsqlDB란 confluent에서 만든 Streaming processing용 툴입니다. Sql구문을 사용하여 Streaming Processing을 사용할 수 있으며, 클러스터 외에 새로운 KsqlDB용 서버 및 클러스터를 구축하여 사용할 수 있습..
-
[Kafka]kafka 필수 개념인 Topology와 Streaming processing 종류 알아보기- , Kpub/sub, Kstreams, KsqlDB의 차이점데이터 엔지니어링/Kafka 2022. 7. 22. 21:27
Kafka 기본 아키텍쳐 producer - broker - consumer 기본적인 아키텍쳐는 source에서 message를 만들고 broker에 보내주면 consumer가 그 메세지를 받아서 소비하는 형식이다. 위에 그림은 1대1 매칭을 나타낸다. 그런데 메세지를 기반으로 내가 원하는 데이터로 처리하는 것을 보통 원한다.예를 들어 카드를 사용할 때 1초안에 3번 이상 결제된데이터, 주식 상승률이 5퍼 이상이 되었을 때 푸쉬 알림하기 등 메세지의 내용만으로 처리하기 힘든 것을 processing하고 컨슘하게 하는 형식을 가질 필요성이 많았다. 그래서 생겨 난 것이 Topology이다. Topology(토폴로지) 토폴로지는 기본적으로 네트워크 토폴로지를 나타낸다. 특히, 노드들의 연결성을 나타낸다. 망..