Supprimer le sujet dans Kafka 0.8.1.1


94

Je dois supprimer le sujet testdans Apache Kafka 0.8.1.1.

Comme indiqué dans la documentation ici , j'ai exécuté:

bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic test

Cependant, cela entraîne le message suivant:

Command must include exactly one action: --list, --describe, --create or --alter

Comment puis-je supprimer ce sujet?


La procédure étape par étape est expliquée dans: stackoverflow.com/questions/33537950/…
Ravindra babu

Réponses:


107

La suppression d'un sujet ne fonctionne pas toujours dans la version 0.8.1.1

La suppression devrait fonctionner dans la prochaine version, 0.8.2

kafka-topics.sh --delete --zookeeper localhost:2181 --topic your_topic_name

  Topic your_topic_name is marked for deletion.
  Note: This will have no impact if delete.topic.enable is not set to true.

Est-il possible de supprimer un sujet?

Jira KAFKA-1397


Merci pour l'info. Savez-vous comment effacer l'ensemble des états Kafka et Zookeeper comme indiqué?
EmPak5

@EmPack IIRC, le moyen le plus simple de le faire (si vous ne vous souciez pas du temps de disponibilité) est d'arrêter tous vos courtiers, de supprimer vos journaux pour ce sujet et de changer votre espace de noms ZK.
franc

95

Il semble que la commande de suppression n'ait pas été officiellement documentée dans Kafka 0.8.1.x à cause d'un bogue connu ( https://issues.apache.org/jira/browse/KAFKA-1397 ).

Néanmoins, la commande était toujours livrée dans le code et peut être exécutée comme:

bin/kafka-run-class.sh kafka.admin.DeleteTopicCommand --zookeeper localhost:2181 --topic test

En attendant, le bogue a été corrigé et la commande de suppression est désormais officiellement disponible à partir de Kafka 0.8.2.0 sous la forme:

bin/kafka-topics.sh --delete --zookeeper localhost:2181 --topic test

D'après ce que j'ai lu, cela pourrait fonctionner 0.8.1.1, mais cela pourrait ne pas fonctionner ... Le correctif est également dans le coffre depuis un certain temps, donc si vous preniez les sources directement du coffre, cela devrait fonctionner
franc

Je viens d'essayer la version 0.8.1.1, cela signale "la suppression a réussi" mais cela n'a pas fonctionné. Le sujet est toujours là, je peux joindre un consommateur et il signalera tous les éléments précédents comme en attente.
Elias Dorneles

La suppression de sujets dans Kafka 0.8.1.1 ne fonctionne pas. La version 0.8.2.0 récemment publiée devrait enfin avoir un support de suppression approprié. Voir blog.confluent.io/2014/12/02/whats-coming-in-apache-kafka-0-8-2 .
Michael G.Noll

BTW, la propriété de delete.topic.enable = true peut être située dans le fichier server.properties. Il est commenté par défaut.
Shanemeister

38

Ajoutez la ligne ci-dessous dans $ {kafka_home} /config/server.properties

delete.topic.enable=true

Redémarrez le serveur kafka avec une nouvelle configuration:

${kafka_home}/bin/kafka-server-start.sh ~/kafka/config/server.properties

Supprimez les sujets que vous souhaitez:

${kafka_home}/bin/kafka-topics.sh --delete  --zookeeper localhost:2181  --topic daemon12

10

Andrea a raison. nous pouvons le faire en utilisant la ligne de commande.

Et nous pouvons toujours le programmer, par

ZkClient zkClient = new ZkClient("localhost:2181", 10000);
zkClient.deleteRecursive(ZkUtils.getTopicPath("test2"));

En fait, je ne vous recommande pas de supprimer le sujet sur Kafka 0.8.1.1. Je peux supprimer ce sujet par cette méthode, mais si vous vérifiez le journal pour zookeeper, la suppression le gâche.


Doit-il également inclure zkClient.deleteRecursive (ZkUtils.getTopicConfigPath ("test2")); et
Sumit

@Sumit, et quoi? Je n'ai pas utilisé ce "getTopicConfigPath". En fait, je ne vous recommande pas de supprimer le sujet sur Kafka 0.8.1.1. Je peux supprimer ce sujet par cette méthode, mais si vous vérifiez le journal pour zookeeper, la suppression le gâche.
Liang

mais c'est ainsi que kafka le fait aussi (comme vous l'avez suggéré): apache.googlesource.com/kafka/+/0.8.1/core/src/main/scala/kafka/…
Sumit

@Sumit. oui, j'ai trouvé le code à partir de là. Je ne suis pas sûr de cette chose "désordonnée". Parce qu'une fois que j'ai supprimé un sujet sur le serveur de mon entreprise, la suppression génère beaucoup de courrier indésirable dans le journal du gardien de zoo. Mais je ne peux pas le reproduire dans mon local. Donc, je ne recommande pas cela ..
Liang

4

Vous pouvez supprimer une rubrique kafka spécifique (exemple test:) de la commande shell zookeeper ( zookeeper-shell.sh). Utilisez la commande ci-dessous pour supprimer le sujet

rmr {path of the topic}

exemple:

rmr /brokers/topics/test

set delete.topic.enable = true, puis supprimer de kafka puis également supprimer de zookeeper ...
minhas23

4

Étapes pour supprimer 1 ou plusieurs sujets dans Kafka

Pour supprimer des rubriques dans kafka, l'option de suppression doit être activée sur le serveur Kafka.

1. Go to {kafka_home}/config/server.properties
2. Uncomment delete.topic.enable=true

Supprimer un sujet dans Kafka, entrez la commande suivante

kafka-topics.sh --delete --zookeeper localhost: 2181 --topic

Pour supprimer plusieurs sujets de kafka

(bon à des fins de test, où j'ai créé plusieurs sujets et j'ai dû les supprimer pour différents scénarios)

  1. Arrêtez le serveur Kafka et le gardien de zoo
  2. allez dans le dossier / tmp où les journaux sont stockés et supprimez manuellement le dossier kafkalogs et zookeeper
  3. Redémarrez le gardien de zoo et le serveur kafka et essayez de lister les sujets,

bin / kafka-topics.sh --list --zookeeper localhost: 2181

si aucun sujet n'est répertorié, tous les sujets ont été supprimés avec succès. Si les sujets sont répertoriés, la suppression a échoué. Essayez à nouveau les étapes ci-dessus ou redémarrez votre ordinateur.


Notez que pour la dernière version de Kafka pour le moment (1.0.0), cette option n'apparaît pas dans le server.propertiesfichier. Vous devez ajouter cette ligne manuellement.
David Corral

La suppression des sujets @DavidCorral est activée par défaut dans la version 1.0.0
Tanner

2

Cette étape supprimera tous les sujets et données

  • Arrêtez le serveur Kafka et le serveur Zookeeper
  • Supprimez les répertoires de données tmp des deux services, par défaut, ils sont C: / tmp / kafka-logs et C: / tmp / zookeeper.
  • puis démarrez le serveur Zookeeper et le serveur Kafka


1

En ajoutant aux réponses ci-dessus, il faut supprimer les métadonnées associées à ce sujet dans le chemin de décalage du consommateur zookeeper.

bin/zookeeper-shell.sh zookeeperhost:port

rmr /consumers/<sample-consumer-1>/offsets/<deleted-topic>

Sinon, le décalage sera négatif dans les outils de surveillance de kafka basés sur zookeeper.


1

Comme mentionné dans doc ici

L'option de suppression de sujet est désactivée par défaut. Pour l'activer, définissez la configuration du serveur delete.topic.enable = true Kafka ne prend actuellement pas en charge la réduction du nombre de partitions pour une rubrique ou la modification du facteur de réplication.

Assurez-vous que delete.topic.enable = true


Je crois que cette option n'est disponible que dans la version 8.2
spuder

1
bin/kafka-topics.sh –delete –zookeeper localhost:2181 –topic <topic-name>

0

Si vous rencontrez des problèmes lors de la suppression des sujets, essayez de supprimer le sujet en utilisant:

$KAFKA_HOME/bin/kafka-topics.sh --delete --zookeeper localhost:2181 --topic your_topic_name

commander. Ensuite, pour vérifier le processus de suppression, allez dans le répertoire des journaux kafka qui est normalement placé sous /tmp/kafka-logs/, puis supprimez le your_topic_namefichier via la rm -rf your_topic_namecommande.

N'oubliez pas de surveiller l'ensemble du processus via un outil de gestion kafka comme Kafka Tool.

Le processus mentionné ci-dessus supprimera les sujets sans redémarrage du serveur kafka.


0

Étape 1: Assurez-vous que vous êtes connecté à zookeeper et Kafka en cours d'exécution

Étape 2: Pour supprimer le sujet Kafka, exécutez Kafka-topic (Mac) ou Kafka-topic.sh si vous l'utilisez (linux / Mac), ajoutez le port et --topic avec le nom de votre sujet et --delete supprimez simplement le sujet avec Succès.

# Delete the kafka topic
# it will delete the kafka topic
kafka-topics --zookeeper 127.0.0.1:2181 --topic name_of_topic --delete
# or
kafka-topics.sh --zookeeper 127.0.0.1:2181 --topic name_of_topic --delete

0

Tout d'abord, vous exécutez cette commande pour supprimer votre rubrique:

$ bin/kafka-topics.sh --delete --bootstrap-server localhost:9092 --topic <topic_name>

Répertoriez les sujets actifs pour vérifier la suppression complète:

$ bin/kafka-topics.sh --list --bootstrap-server localhost:9092
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.