Topic Delete
kafka-topics 명령어를 이용하는 방법
Kafka에서 Topic을 삭제가 필요할때가 있다. 어떻게 하는 것일까? 카프카에서 공식적으로 추천하는 방법은 커맨드를 사용하는 방법이다. 먼저 kafka server.properties파일에 설정이 필요하다. 이 설정을 안하면 삭제가 no impact란다.
# etc/kafka/server.properties파일
delete.topic.enable = true
그리고, kafka-topics으로 삭제를 해주면 된다. 그리고, 다시 topic create를 해서 성공적으로 만들어 지면, 정상이다. 그러나, 세상일이 정상적으로 되는것만은 아니다 ㅠㅜ
$ kafka-topics --delete --zookeeper localhost:2181 --topic 토픽이름
Topic topic-ui5.0-action is marked for deletion.
Note: This will have no impact if delete.topic.enable is not set to true.
$ kafka-topics --create --zookeeper localhost:2181 --topic 토픽이름
Error while executing topic command : Topic '토픽이름' already exists.
토픽 삭제가 제대로 안될때, 토픽을 확인해 보면, 삭제후에도 partition이 남아있다. partition이 3짜리 였는데, 2개가 지워지고 1개 파티션이 남았다. 아무리 delete를 해도 쓰레기 파티션이 남는다.
$ kafka-topics --describe --zookeeper localhost:2181 --topic 토픽이름
Topic:토픽이름 PartitionCount:1 ReplicationFactor:1 Configs:
Topic: 토픽이름 Partition: 0 Leader: 1 Replicas: 1 Isr: 1
Zookeeper 쉘을 이용한 방법
zookeeper-shell을 이용하여서, 쓰레기 파티션을 삭제해 버리자. rmr명령으로 삭제하면 깨끗이 삭제가 된다. 삭제후, 토픽 create를 하면 성공을 한다. 겨우 성공했다ㅠㅜ
$ zookeeper-shell localhost:2181
ls /brokers/topics
토픽이름 토픽2 토픽3
rmr /brokers/topics/토픽이름
exist
$ kafka-topics --create --zookeeper localhost:2181 --topic 토픽이름
success create topic