일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 알고리즘
- spring
- 신입
- 깃허브
- 디지털
- Effective Java
- 이펙티브 자바
- 우리카드
- 스터디
- 신입사원
- 정보처리기사
- CS
- Public
- 운영체제
- 프로그래밍
- 컴퓨터공학
- 스프링
- 개발
- IT
- java
- package-private
- 깃
- 자바
- 메모리
- github
- OS
- 세마포어
- 뮤텍스
- 컴퓨터과학
- 공채
- Today
- Total
주니어 개발자 성장기
카프카 유용한 스크립트 목록 본문
kafka-topics.sh
토픽 생성 명령어
bin/kafka-topics.sh --create --bootstrap-server my-kafka:9092 --topic hello.kafka
bin/kafka-topics.sh --create --bootstrap-server my-kafka:9092 --partitions 10 --replication-factor 1 --topic hello.kafka2 --config retention.ms=172800000
토픽 확인 명령어
bin/kafka-topics.sh --bootstrap-server my-kafka:9092 --topic hello.kafka --describe
Topic: hello.kafka PartitionCount: 1 ReplicationFactor: 1 Configs: segment.bytes=1073741824
Topic: hello.kafka Partition: 0 Leader: 0 Replicas: 0 Isr: 0
토픽에 대한 파티션 추가 명령어
bin/kafka-topics.sh --bootstrap-server my-kafka:9092 --topic test --alter --partitions 10
카프카는 토픽 추가만 가능하다! (삭제 시 파티션 재분배의 복잡성 때문에 구현되지 않았다.)
kafka-config.sh
카프카 토픽 옵션 설정
--alter
, --add-config
옵션을 사용해서 min.insync.replicas 옵션을 토픽별로 설정할 수 있다.
bin/kafka-configs.sh --bootstrap-server my-kafka:9092 --alter -add-config min.insync.replicas=2 --topic test
카프카 브로커 기본값 조회
--broker
, --all
, --describe
옵션을 사용해서 브로커에 설정된 각종 기본값을 조회할 수 있다.
bin/kafka-configs.sh --bootstrap-server my-kafka:9092 --broker 0 --all --describe
kafka-console-producer.sh
key가 null인 레코드를 추가하기
bin/kafka-console-producer.sh --bootstrap-server my-kafka:9092 --topic hello.kafka
> hello
> message
> 0
> 1
> 2
> (Ctrl + D)
Ctrl + D
로 EOF를 나타내 종료 가능하다.
key를 지정하여 레코드 추가하기
bin/kafka-console-producer.sh --bootstrap-server my-kafka:9092 --topic hello.kafka --property "parse.key=true" --property "key.separator=:"
> k1:message
> k2:hello
> k3:new
> k4:hi
> ...
kafka-console-consumer.sh
레코드를 확인하기 위해서 가장 많이 쓰는 명령어(쉘 스크립트)
레코드 확인하기
레코드의 메시지 키와 메시지 값을 확인하고 싶다면 --property
옵션을 사용하면 된다.--max-messages
옵션을 사용하면 최대 컨슘 메세지 개수를 설정할 수 있다.--partition
옵션을 사용하면 특정 파티션만 컨슘할 수 있다.
토픽의 모든 레코드 확인하기
bin/kafka-console-consumer.sh --bootstrap-server my-kafka:9092 --topic hello.kafka --from-beginning
토픽의 모든 레코드를 키와 함께 확인하기
bin/kafka-console-consumer.sh --bootstrap-server my-kafka:9092 --topic hello.kafka --property print.key=true --property key.separator="-" --from-beginning
토픽의 레코드 1개만 확인하기
bin/kafka-console-consumer.sh --bootstrap-server my-kafka:9092 --topic hello.kafka --from-beginning --max-messages 1
특정 파티션의 레코드 조회하기
bin/kafka-console-consumer.sh --bootstrap-server my-kafka:9092 --topic hello.kafka --from-beginning --partition 04
특정 컨슈머 그룹을 기준으로 레코드 조회하기
bin/kafka-console-consumer.sh --bootstrap-server my-kafka:9092 --topic hello.kafka --group hello-group --from-beginning
kafka-consumer-groups.sh
컨슈머 그룹은 따로 생성하는 명령을 날리지 않고 컨슈머를 동작할 때 컨슈머 그룹이름을 지정하면 새로 생성된다. 생성된 컨슈머 그룹의 리스트는 kafka-consumer-groups.sh
명령어로 확인할 수 있다.
--describe
옵션을 사용하면 해당 컨슈머 그룹이 어떤 토픽을 대상으로 레코드를 가져갔는지 상태를 확인할 수 있다. 파티션 번호, 현재까지 가져간 레코드의 오프셋, 파티션 마지막 레코드의 오프셋, 컨슈머 랙(LAG), 컨슈머 ID, 호스트를 알 수 있기 때문에 컨슈머의 상태를 조회할 때 유용하다.
컨슈머 랙이란? 프로듀서와 컨슈머간의 처리 속도 차이(지연)를 확인하는 지표
# 컨슈머 그룹의 리스트를 조회
❯ bin/kafka-consumer-groups.sh --bootstrap-server my-kafka:9092 --list
# 특정 컨슈머 그룹이 레코드를 조회해간 상태 확인
❯ bin/kafka-consumer-groups.sh --bootstrap-server my-kafka:9092 --group hello-group --describe
오프셋 리셋
컨슈머 그룹의 오프셋(처리할 레코드의 순번)을 상황에 따라 조정할 수 있다.
오프셋을 가장 낮은 것으로 리셋(즉, 모든 데이터를 재처리)
❯ bin/kafka-consumer-groups.sh --bootstrap-server my-kafka:9092 --group hello-group --topic hello.kafka --reset-offsets --to-earliest --execute
kafka-producer-perf-test.sh
카프카 프로듀서로 퍼포먼스를 측정할 때 사용된다.
kafka-reassign-partitions.sh
리더 파티션과 팔로워 파티션이 위치를 변경할 수 있다. 카프카 브로커에는 auto.leader.rebalance.enable 옵션이 있는데 이 옵션의 기본값은 true로써 클러스터 단위에서 리더 파티션을 자동 리밸런싱하도록 도와준다.
브로커의 백그라운드 스레드가 일정한 간격으로 리더의 위치를 파악하고 필요시 리더 리밸런싱을 통해 리더의 위치가 알맞게 배분된다.
kafka-delete-record.sh
주어진 OFFSET과 이전의 모든 레코드를 지우는 명령어
kafka-dump-log.sh
카프카를 직접 운영할 때 사용할 수 있는 명령어
출처: 인프런 - [아파치 카프카 애플리케이션 프로그래밍] 개념부터 컨슈머, 프로듀서, 커넥트, 스트림즈까지! , 데브원영