본 포스팅은 인프런 데브원영님의 [아파치 카프카 애플리케이션 프로그래밍]의 강의를 수강 후 정리하는 글입니다.
[아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지!
데브원영 DVWY | 실전 환경에서 사용하는 아파치 카프카 애플리케이션 프로그래밍 지식들을 모았습니다! 데이터 파이프라인을 구축하는데 핵심이 되는 아파치 카프카의 각종 기능들을 살펴보고
www.inflearn.com
1. kafka-topics.sh
1-1. 토픽 생성
카프카 클러스터 정보와 토픽 이름만으로 토픽 생성 가능
bin/kafka-topics.sh --create --bootstrap-server my-kafka:9092 --topic hello.kafka
필수: 카프카 클러스터 정보, 토픽 이름
옵션: 파티션 개수, 복제 개수 등등
1-2. 토픽 상세 조회
bin/kafka-topics.sh --bootstrap-server my-kafka:9092 --topic hello.kafka --describe
1-3. 토픽 생성(옵션 추가)
bin/kafka-topics.sh --create --bootstrap-server my-kafka:9092 --topic hello.kafka2 --partitions 10 --replication-factor 1 --config retention.ms=172800000
bin/kafka-topics.sh --create --bootstrap-server 172.20.218.223:9092 \
--topic test \
--partitions 10 \
--replication-factor 1 \
--config retention.ms=172800000
1-4. 토픽 목록 조회
bin/kafka-topics.sh --bootstrap-server my-kafka:9092 --list
1-5. 파티션 개수 늘리기
bin/kafka-topics.sh --bootstrap-server my-kafka:9092 --topic hello.kafka2 --alter --partitions 12
줄이는 명령을 내리면 InvalidPartitionsException 발생
피치못할 사정으로 파티션 개수를 줄여야 할 때는 토픽을 새로 만드는 걸 추천
2. kafka-config.sh
토픽의 일부 옵션은 kafka-config.sh 통해서 변경 또는 추가
2-1. min.insync.replicas
최소한의 리더 파티션의 동기화를 보장하는 레플리카 수 (리더 파티션 포함)를 지정하는 옵션
bin/kafka-configs.sh --bootstrap-server my-kafka:9092 \
--alter \
--add-config min.insync.replicas=2 \
--topic test
옵션 삭제하는 방법
bin/kafka-configs.sh --bootstrap-server my-kafka:9092 \
--alter --delete-config min.insync.replicas \
--topic test
2-2. 브로커에 설정된 각종 기본값 조회
bin/kafka-configs.sh --bootstrap-server my-kafka:9092 \
--broker 0 \
--all \
--describe
3. kafka-console-producer.sh
3-1. 토픽에 데이터 보내기(메시지 value만)
문자를 작성하고 엔터 키를 보내면 message value 가 보내짐
메시지 key: null
bin/kafka-console-producer.sh --bootstrap-server my-kafka:9092 \
--topic hello.kafka
3-2. 토픽에 데이터 보내기(메시지 key & value)
bin/kafka-console-producer.sh --bootstrap-server my-kafka:9092 \
--topic hello.kafka \
--property "parse.key=true" \
--property "key.separator=:"
key.separator의 디폴트 설정은 Tab delimiter(\t) 여서, 선언하지 않고 메시지를 보내려면 아래와 같이 탭 키를 눌러서 분리
>key1 no1
>key2 no2
>key3 no3
3-3. 메시지 키와 값이 포함된 레코드, 파티션에 전송
\메시지 키가 null인 경우: 레코드 배치 단위(레코드 전송 묶음)로 라운드 로빈으로 전송
메시지 키 존재: 키의 해시값을 작성하여 존재하는 파티션 중 한 개로 할당
동일한 메시지 키를 가진 레코드끼리 순서를 지킬 수 있음
'Kafka' 카테고리의 다른 글
[Apache Kafka] 4. 아파치 카프카 CLI 활용(4) - CLI 추가 참고사항 (0) | 2024.10.11 |
---|---|
[Apache Kafka] 4. 아파치 카프카 CLI 활용(3) - 컨슈머, 컨슈머 그룹, 성능테스트, 로그덤프 (1) | 2024.10.11 |
[Apache Kafka] 4. 아파치 카프카 CLI 활용(1) - 브로커, 주키퍼 생성 (3) | 2024.10.10 |
[Apache Kafka] 3. 카프카 클러스터 운영 (0) | 2024.10.09 |
[Apache Kafka] 2. 카프카 기본 개념 설명(2) (3) | 2024.10.08 |