Programming/Kafka

[kafka] 자주 사용하는카프카 명령어

bisi 2020. 4. 23. 13:25

카프카 사용시 자주 사용하는 명령어이다.

  • 명령어 확인 경로: /usr/local/kafka/bin

 

 

토픽 생성

> bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test-topic

 

토픽 리스트 확인

> bin/kafka-topics.sh --list --bootstrap-server localhost:9092 

 

토픽 상세 보기

> bin/kafka-topics.sh --describe --bootstrap-server localhost:9092 --topic test-topic

 

토픽 설정 변경

 

  • 디스크 공간 확보시 필요. 
  • 운영 중 디스크 공간을 확보하는 가장 좋은 방법은 디스크 공간을 가장 많이 차지 하는 토픽의 보관 주기를 줄여주는 것.
  • 보관주기의 옵션을 주지않고 토픽을 생성했다면 기본값은 7일
  • 보관 주기를 1시간으로 줄이는 명령문
> bin/kafka-topics.sh --zookeeper localhost:2181 --alter --topic newdata3 --config retention.ms=3600000

 

토픽의 파티션 수 변경

  • 카프카에서는 운영 중에 간단한 명령어로 토픽의 파티션 수를 늘려줄 수 있음.
  • 주의할 점은 토픽의 파티션 수는 증가만 가능하고, 감소는 불가능.
  • 파티션만 증가했다고 메시지에 대한 전체 처리 성능이 좋아지는 것은 아님.
  • 파티션의 수만큼 컨슈머 역시 추가해줘야 함.
> bin/kafka-topics.sh --zookeeper localhost:2181 --alter --topic test-topic -partitions 2

 

  • 해당 명령어 실행 결과 아래와 같은 WARNING이 발생한다.
WARNING: If partitions are increased for a topic that has a key, the partition logic or ordering of the messages will be affected
Adding partitions succeeded!

 

  • key를 이용해 메시지를 전송하고 가져오는 형태를 운영하고 있다면 파티션 수를 변경할 때 주의해야 함.

 

토픽의 리플리케이션 팩터 변경

  • 변경을 위해서 아래와 같은 json 형식의 파일 필요
{"version":1,
"partitions":[
    {"topic":"peter-topic","partition":0,"replicas":[1,2]},
    {"topic":"peter-topic","partition":0,"replicas":[2,3]}

]}

 

  • json 파일 실행하여 replication-factor 생성
bin/kafka-reassign-partitions.sh --zookeeper peter-zk001:2181,peter-zk002:2181,peter-zk003:2181/peter-kafka --reassignment-json-file /usr/local/kafka/rf.json --execute

 

컨슈머 그룹 리스트 확인

bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --list

 

 

컨슈머 상태와 오프셋 확인

bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --group test-consumer --describe