본문 바로가기

Kafka14

[Kafka] 카프카 로그 보관 주기 [카프카] 데이터 보관 카프카는 컨슈머(Consumer)가 데이터를 가져가더라도 토픽(Topic)의 데이터는 삭제되지 않는다. 컨슈머나 프로듀서(Proucer) 또한 데이터의 삭제를 요청할 수 없다. 오직 브로커 만이 데이터를 삭제할 수 있다. 데이터 삭제는 파일 단위 '로그 세그먼트 (log segment)'로 이루어진다. 로그 세그먼트 (log segment) 로그 세그먼트에는 다수의 데이터가 들어 있기 때문에 다른 데이터베이스처럼 특정 데이터를 삭제할 수 없다. 세그먼트는 데이터가 쌓이는 동안 파일 시스템으로 열려있으며 카프카 옵션에 따라 파일이 닫힌다. 세그먼트 파일이 닫히는 간격을 줄이기 위해 log.segment.bytes 를 작은 용량으로 설정하면 데이터들을 저장하는 동안 세그먼트 파일을 주.. 2021. 11. 23.
[Kafka] 카프카 커맨드 라인 툴 (command-line tool) 최원영님의 ‘아파치 카프카 애플리케이션 프로그래밍 with 자바’를 보고 작성한 글입니다. 😀 1. kafka-topics.sh 토픽이란 카프카에서 데이터를 구분하는 가장 기본적인 개념(RDBMS의 테이블과 유사)으로 최소 1개 부터 많게는 브로커 당 4,000개 및 클러스터 당 200,000개 이하의 파티션으로 구성된다. (출처) 토픽 생성 (옵션 x) $ kafka-topics.sh \ --create \ --bootstrap-server ip-kafka:9092 \ --topic example.kafka.1 create: 토픽을 생성하는 명령어이다. bootstrap-server: 토픽을 생성할 카프카 클러스터의 브로커 ip와 port 작성한다. (브로커가 여러개라면 여러개의 브로커 ip와 port.. 2021. 11. 23.
[Kafka] 원하는 tweet을 Kafka에서 ElasticSearch로 보내기 'Stéphane Maarek - Learn Apache Kafka for Beginners v2'를 보고 작성한 글입니다. 😀 1. Twitter APPs Twitter Apps 에서 회원가입을 하고 간단한 앱을 만들어 key랑 token을 받는다 2. Producer with Twitter API Twitter API를 통해 원하는 tweet을 kafka로 가져와야한다. 이번 예제에서 사용할 API는 twitter java api를 이용한다 github를 들어가보면 Quickstart를 통해 쉽게 사용이 가능하다 3. Twitter Producer Kafka Producer와 Twitter API를 사용하기 위해 build.gradle에 dependency를 추가한다 dependencies { tes.. 2021. 11. 23.
[Kafka] Advanced Topic Configurations 'Stéphane Maarek - Learn Apache Kafka for Beginners v2'를 보고 작성한 글입니다. 😀 Topic Configurations 에 관심을 가져야하는 이유 브로커에는 모든 Topic Configuration parameter 에 대한 기본값이 있다. 이러한 parameter 는 성능 및 토픽 동작에 영향을 준다. 일부 항목에는 기본값과 다른 값이 필요할 수 있다. Replication Factor Number of Partitions Message size Compression level Log Cleanup Policy Min Insync Replicas Other configurations partitions and Segments 토픽은 파티션으로 구성된다. 파.. 2021. 11. 23.
[Kafka] Partitions Count, Replication Factor 'Stéphane Maarek - Learn Apache Kafka for Beginners v2'를 보고 작성한 글입니다. 😀 Partitions Count, Replication Factor 토픽을 만들 때 가장 중요한 두 가지 매개 변수이다 전체 시스템의 성능과 내구성에 영향을 미친다 매개 변수를 처음부터 올바르게 설정하는 것이 가장 좋다 토픽 수명주기 동안 파티션 수가 증가하면 키의 순서 보장이 깨진다 토픽 수명주기 동안 복제 계수가 증가하면 클러스터에 더 많은 압력을 가하여 예기치 않은 성능 저하로 이어질 수 있다 Partitions Count 각 파티션은 MB/s 단위의 처리량을 다룰 수 있다 파티션의 개수가 많을수록 : 병렬 처리 및 처리량 향상 그룹에서 더 많은 컨슈머를 실행하여 확장 가능.. 2021. 11. 23.
[Kafka] Extended APIs - Connect, Stream, Schema Registry 'Stéphane Maarek - Learn Apache Kafka for Beginners v2'를 보고 작성한 글입니다. 😀 Kafka Connect and Stream 4가지 일반적인 Kafka 사용 사례 Source => Kafka Producer API Kafka Connect Source Kafka => Kafka Consumer, Producer API Kafka Streams Kafka => Sink Consumer API Kafka Connect Sink Kafka => App Consumer API Kafka Connect Source Connector : 공용 데이터 소스에서 데이터를 가져오는 것 Sink Connector : 공용 데이터 저장소에 데이터를 게시하는 것 데이터를 빠르고.. 2021. 11. 23.
[Kafka] Advanced Consumer Configurations 'Stéphane Maarek - Learn Apache Kafka for Beginners v2'를 보고 작성한 글입니다. 😀 Delivery Semantics for Consumers At most once 메시지 배치가 수신되는 즉시 오프셋이 커밋된다 처리가 잘못되면 메시지가 손실된다 (다시 읽지 않음) At least once 메시지가 처리된 후 오프셋이 커밋된다. 처리가 잘못되면 메시지를 다시 읽는다 이로 인해 메시지가 중복 처리 될 수 있다 처리가 멱등성(idempotent)인지 확인한다 (즉, 메시지를 다시 처리해도 시스템에 영향을주지 않음) Exactly once Kafka -> Kafka 는 Kafka Stream API 사용 Kafka -> Sink 는 Idempotent Consume.. 2021. 11. 23.
[Kafka] Advanced Producer Configurations 'Stéphane Maarek - Learn Apache Kafka for Beginners v2'를 보고 작성한 글입니다. 😀 Acks & min.insync.replicas acks = 0 (no acks) ack 를 요청하지 않음 브로커가 오프라인 상태가되거나 exception 이 발생하면 데이터가 손실될 수 있다 데이터를 손실해도 괜찮은 것에 유용 Metrics collection Log collection acks = 1(leader acks) 리더 브로커의 ack 는 요청하지만 레플리케이션은 보장하지 않음 ack 를 받지 못하면, 프로듀서는 재전송할 수 있다 리더 브로커가 오프라인 상태가되었지만 레플리케이션이 아직 데이터를 복제하지 않을 경우 데이터가 손실된다 acks = all (replic.. 2021. 11. 23.
[Kafka] Kafka Theory (기본 개념) 'Stéphane Maarek - Learn Apache Kafka for Beginners v2'를 보고 작성한 글입니다. 😀 Topic, Partition and Offset Topic : 특정 데이터 스트림 데이터베이스의 테이블과 유사 (제약이 없음) 원하는만큼 토픽을 가질 수 있다 토픽은 토픽의 이름으로 식별된다 (중복 x) 토픽은 여러 partiton 으로 나누어진다 파티션 내의 각 데이터는 offset 이라는 incremental id를 가진다 오프셋은 해당 파티션 내에서만 유효하다 E.g 파티션 1과 파티션 2의 오프셋은 서로 다르며 같다 하더라도 다른 데이터를 나타낸다 토픽의 순서는 파티션 내에서만 보장된다 (파티션 간의 순서는 보장 x) 데이터가 파티션에 기록되면 변경할 수 없다 (imm.. 2021. 11. 23.