카프카23 Java-Gradle Kafka 환경 설정하기 sdk 리스트: https://learn.conduktor.io/kafka/kafka-sdk-list/IntelliJ Idea에서 New Project 통해 Java > Gradle 선택 및 jdk 잡아주기프로젝트 하위에 새로운 module을 다음과 같이 만들어준다.maven repository로 간다: https://mvnrepository.com/artifact/org.apache.kafka가장 먼저 kafka-clients가 눈에 띌 것가장 최신 버전을 클릭해주기.거기서 Gradle을 클릭하여 복사해준 후, 그대로 dependencies 하위에 붙여넣어준다.// https://mvnrepository.com/artifact/org.apache.kafka/kafka-clientsimplementati.. DevOps/Kafka 2025. 1. 22. Mac OS에서 쓸 수 있는 kafka docker-compose 구성 (arm 64) Docker Compose를 이용한 Kafka 클러스터 구성Kafka는 분산 메시징 시스템으로, 데이터 스트리밍 처리에 널리 사용된다. 이 글에서는 Docker Compose를 활용하여 Zookeeper와 Kafka 브로커 3개로 구성된 로컬 환경을 구축하는 방법을 다룬다. 또한, Kafka UI 및 관리 도구를 포함하여 운영 환경을 시뮬레이션할 수 있는 구성 방법도 설명한다.1. Kafka 클러스터 개요Kafka 클러스터는 일반적으로 다음과 같은 구성 요소를 포함한다.Zookeeper: Kafka 브로커들의 메타데이터를 관리하며 클러스터의 상태를 조율한다.Kafka 브로커: 메시지를 저장하고 클라이언트로부터의 요청을 처리하는 핵심 요소이다. 브로커는 여러 개로 구성될 수 있으며, 데이터의 분산 및 복제.. DevOps/Kafka 2024. 11. 21. [카프카] 트랜잭션 프로듀서와 트랜잭션 컨슈머 도입오늘도 돌아온 지우.지우는 욕심쟁이라 피카츄 백만볼트, 잠만보 휴식, 피카츄 상처 치료, 피카츄 몸통박치기를 한큐에 끝내고 싶은데, 만약 한턴에 4동작을 하는 게 실패한다면, 위험해 질 수 있어, 그냥 모두 없었던 일로 하고 싶다. 트랜잭션 프로듀서카프카에서 트랜잭션은 다수의 파티션에 데이터를 저장할 경우 모든 데이터에 대한 동일한 원자성(atomic)을 만족시키기 위해 사용된다. 원자성을 만족시킨다는 의미는 다수의 데이터를 동일 트랜잭션으로 묶음으로써 전체 데이터를 처리하거나 전체 데이터를 처리하지 않도록 하는 것을 의미한다.트랜잭션 프로듀서는 데이터를 파티션에 저장할 뿐 아니라, 트랜잭션의 시작과 끝을 표현하기 위해 트랜잭션 레코드(커밋)를 한 개 더 보낸다. 이를테면 이렇게, 명령이 다 끝났다.. DevOps/Kafka 2024. 9. 17. [카프카] 멱등성(idempotence) 프로듀서란? 도입지우(프로듀서)가 하는 말을 포켓몬(컨슈머)이 알아들을 수 없어서,배틀필드에서 차례대로 시리(브로커)가 포켓몬어로 번역해준다고 하자.호기롭게 외쳤고, 시리도 들었지만 시리가 통신 오류로 "네 알겠습니다 주인님"을 못했다.지우가 중꺾마 정신으로 다시 "포켓몬의 백만볼트"를 외치니, 시리는 이제 "포켓몬의 백만볼트"를 두번 삐까츄에게 전달해주고,삐까츄는 그렇게 탈진해버렸다는 슬픈 이야기...그렇다면, 어떻게 해야 삐까츄에게 같은 명령이 여러 번 전달되지 않게 할 수 있을까?프로듀서의 전달방식프로듀서가 브로커에게 명령을 전달하는 방식에는 아래의 세 가지가 있다.at least once: 적어도 한번 이상 전달 (기본 프로듀서의 동작 방식이며, 데이터가 유실되지 않지만, 이 경우 위 사례처럼 두 번이상 적재.. DevOps/Kafka 2024. 9. 17. [카프카 퀴즈] 카프카 cli 퀴즈 토픽을 생성하기 위해서는 반드시 kafka-topics.sh를 사용해야 한다 (O/X)X, 브로커 옵션에 따라 프로듀서 컨슈머 요청에 따라서도 가능kafka-topics.sh를 사용하여 토픽을 생성하면 복제 개수는 항상 1로 설정된다 (O/X)X, 옵션 (rf), 브로커 옵션에 따라kafka-console-producer.sh를 사용하여 메시지 키와 메시지 값이 담긴 레코드를 전송할 수 있다 (O/X)O, 콘솔 프로듀서와 parse key 사용하기kafka-console-consumer.sh를 사용하면 오프셋을 확인할 수 있다 (O/X)X,메시지키와 메시지 밸류 확인가능 DevOps/Kafka 2024. 7. 2. [카프카 프로그래밍] 그 외 커맨드 라인 툴, 카프카 토픽을 만드는 두가지 방법, 카프카 브로커와 로컬 커맨드 라인 툴 버전을 맞춰야 하는 이유 그 외 커맨드 라인 툴kafka-producer-perf-test.sh: Kafka 생산자의 퍼포먼스를 측정하는 스크립트 (유사 스크립트: kafka-consumer-perf-test.sh)kafka-reassign-partitions.sh: 리더 파티션과 팔로워 파티션의 위치를 재배치하여 리더 위치를 적절하게 배분하는 스크립트kafka-delete-records.sh: 특정 토픽에서 레코드를 삭제하는 스크립트kafka-dump-log.sh: Kafka 로그 세그먼트를 덤프하여 로그의 내용을 확인하는 스크립트카프카 토픽을 만드는 두가지 방법컨슈머 또는 프로듀서가 브로커에 데이터를 요청할때커맨드 라인 툴로 명시적으로 토픽을 생성할 때대부분은 커맨드 라인으로 명시적으로 만드는 게 유지보수하기 좋음.카프카 브.. DevOps/Kafka 2024. 7. 2. [카프카 프로그래밍] kafka-consumer-groups.sh ⭐️ kafka-console-groups.sh 용도hello-group 이름의 컨슈머 그룹으로 생성된 컨슈머로 hello.kafka 토픽의 데이터를 가져갔다.이를 이 명령어로 확인하는 것.컨슈머 그룹은 따로 생성하는 명령을 날리지 않고 컨슈머를 동작할 때 컨슈머 그룹이름을 지정하면 새로 생생된다.컨슈머 랙? 마지막 레코드의 오프셋과 가져간 레코드의 오프셋의 차오프셋 리셋kafka-console-groups.sh 에서 오프셋 리셋이 가장 큰 기능옵션--to-earliest: 가장 처음 오프셋으로 리셋--to-latest: 가장 마지막 오프셋으로 리셋--to-current: 현시점 기준 오프셋으로 리셋--to-datetime:특정 일시로--shift-by 현재 컨슈머 오프셋에서 앞뒤로 옮겨서컨슈머 그룹 리스트 .. DevOps/Kafka 2024. 7. 2. [카프카 프로그래밍] kafka-console-producer.sh, kafka-console-consumer.sh kafka-console-producer.sh 용도토픽에 데이터 넣기용key.separator선언해야 레코드키 전송메시지 키가 동일한 경우에는 동일한 파티션null인 경우는 라운드로빈bin/kafka-console-producer.sh --bootstrap-server my_kafka:9092 --topic hello.kafka명령어 치면 꺽쇠나옴따로 이렇게 parse key 안주면 메시지 값은 hello 로 설정되지만 메시지 키는 null이고 라운드로빈으로 설정되는것임.bin/kafka-console-producer.sh --bootstrap-server my_kafka:9092 --topic hello.kafka --property "parse.key=true" --property "key.separ.. DevOps/Kafka 2024. 7. 1. [카프카 프로그래밍] kafka-configs.sh kafka-configs.sh는?토픽의 일부옵션을 설정하기 위한 명령어 min.insync.replicas 옵션을 토픽별로 설정 가능.원래 describe 했을 때 configs min.insync.replics 설정 아무것도 없던 hello.kafka2 topicbin/kafka-configs.sh --bootstrap-server my_kafka:9092 --alter --add-config min.insync.replicas=2 --topic hello.kafka2[참고] min.insync.replicasmin.insync.replicas는 ack응답을 보내기 위한 리더가 확인해야할 최소 리플리케이션의 수를 지정하는 브로커 관련 옵션이다.아무리 메세지 무손실을 위해 acks=all의 옵션을 프로듀.. DevOps/Kafka 2024. 6. 30. [카프카 프로그래밍] kafka-topics.sh 토픽생성bin/kafka-topics.sh --create --bootstrap-server my_kafka:9092 --topic hello.kafka상세 (파티션이나 rf등이 보고싶다!)bin/kafka-topics.sh --bootstrap-server my_kafka:9092 --topic hello.kafka --describe내가 상세한 설정을 다르게 만들고 싶어 (파티션은 10으로, rf는 1로, retention도 바꿔서)bin/kafka-topics.sh --create --bootstrap-server my_kafka:9092 --partitions 10 --replication-factor 1 --topic hello.kafka2 --config retention.ms=17280000.. DevOps/Kafka 2024. 6. 30. [카프카 프로그래밍] 로컬 카프카 실행 저번에 설치까지 마쳐서(https://naa0.tistory.com/410) Documents쪽에 kafka_2.12-2.5.0라는 이름의 폴더로 kafka가 설치되어 있다.포인트는 주키퍼를 먼저 실행시키고 브로커를 실행시켜야한다는 점이다.해당 폴더에서 config/server.properties를 고쳐준다.여기에는 broker.id=0이라는 값이 있는데 이를 통해 우리가 띄울 broker id가 0이라는 걸 알 수 있다.우선 listeners와 advertised.listeners 주석 해제후 localhost로 바꾸기그리고 data 디렉토리를 새로 생성해준다.로그세그먼트 여기에 저장할 예정인데, 그럼 다시 server.properties의 log.dirs를 해당 경로로 바꿔준다.주키퍼 실행bin/zo.. DevOps/Kafka 2024. 6. 30. [카프카 프로그래밍] 로컬 카프카 설치 순서JVM 설치주의할 점은 브로커, 주키퍼는 모두 JVM에서 돌아간다는 점이다. JVM이 설치되어 있지 않다면 JVM부터 설치!해준다. (윈도우 JVM 설치: https://velog.io/@mirrorkyh/JVMJava-Virtual-Machin-%EC%A2%85%EB%A5%98%EC%99%80-%EC%84%A4%EC%B9%98)brew updatebrew tap adoptopenjdk/openjdkbrew search jdk원하는 버전 설치brew install --cask adoptopenjdk11현재 쓰고 있는 쉘(zsh)에서 환경변수 잡아주기자바 설치된 곳 확인/usr/libexec/java_home -Vvim ~/.zshrc# Java Pathsexport JAVA_HOME_11=$(/usr.. DevOps/Kafka 2024. 6. 30. [카프카 퀴즈] 카프카 운영 퀴즈 컨플루언트 플랫폼은 클라우드에서 제공하는 SaaS형 카프카이다 (O/X)X 온프렘에 직접설치하는. 컨플루언트 클라우드에 대한 설명.SaaS를 사용하면 비용이 반드시 절감된다 (O/X)X 보통 더 많이 나옴.SaaS형 카프카를 사용하더라도 주키퍼는 사용자가 운영해야 한다 (O/X)X AWS MSK는 컨플루언트의 대표적인 클라우드 서비스이다 (O/X)X SaaS형 카프카를 사용하면 카프카에 대한 깊은 지식이 없어도 무관하다 (O/X)X 사용하더라도 카프카를 사용하는 건 똑같다. DevOps/Kafka 2024. 6. 29. [카프카 프로그래밍] 카프카 클러스터를 운영하는 여러가지 방법 온프레미스 : 전산실. 오픈소스 카프카나 기업용 카프카설치, 운영할 수 있어야.IaaS : aws 등 마찬가지로 오픈소스/기업용 카프카 설치, 운영할 수 있어야.기업용 카프카 예시? 컨플루언트 플랫폼 등 - 튜닝 되어있음. 무료는 아니지만 커넥트를 활용하여 DB 연결이 제공되고 모니터링 툴이 제공되는 등 기능 제공SaaS : 소프트웨어 전체 제공. 컨플루언트 클라우드 또는 MSK가 대표적.노하우가 부족하면 SaaS 도입 후 IaaS나 온프레미스로 마이그레이션 하는 것도 괜찮은 방법💡직접 설치/운영 tip메모리 : 32GB 머신 힙메모리 6GB로 브로커 돌리고, 나머지는 OS 페이지 캐시영역으로 활용CPU : 24 core머신디스크: raid 10, NAS 사용하면 안됨네트워크: 데이터 통신량 따라 다름.. DevOps/Kafka 2024. 6. 29. [카프카 퀴즈] 카프카 기본 구조 퀴즈 컨슈머가 가져간 데이터는 파티션에서 삭제된다 (O/X)X카프카에서 데이터 복제의 단위는 토픽이다 (O/X)X. 파티션임.파티션은 1개의 리더 파티션과 1개 이상의 팔로워 파티션으로 이루어져 있다 (O/X)X 리더만일수도? (rf=1)프로듀서와 컨슈머는 팔로워 파티션과 통신하여 데이터 처리량을 늘릴 수 있다 (O/X)X (반드시 프로듀서와 컨슈머는 리더 파티션과만 통신!)레코드는 타임스탬프, 메시지 키, 메시지 값, 오프셋으로 이루어져 있다 (O/X)X (+ 헤더. 데이터 처리할 때 필요한 스키마)다음 파티션에서 압축(compact)이 실행된다면, 남은 모든 오프셋의 배열은? (주관식, 숫자 나열)10 14 15 16 17 18 19이 포스팅은 모두 인프런의 [아파치 카프카 애플리케이션 프로그래밍] 개념부.. DevOps/Kafka 2024. 6. 27. 이전 1 2 다음