Je dois supprimer le sujet test
dans 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
Toutefois, cela entraîne le message suivant:
Command must include exactly one action: --list, --describe, --create or --alter
Comment puis-je supprimer ce sujet?
La suppression de sujet ne fonctionne pas toujours dans la 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.
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 incluse dans le code et pouvait être exécutée comme suit:
bin/kafka-run-class.sh kafka.admin.DeleteTopicCommand --zookeeper localhost:2181 --topic test
Dans l'intervalle, le bogue a été corrigé et la commande de suppression est maintenant officiellement disponible à partir de Kafka 0.8.2.0 en tant que:
bin/kafka-topics.sh --delete --zookeeper localhost:2181 --topic test
Ajouter la ligne ci-dessous dans $ {kafka_home} /config/server.properties
delete.topic.enable=true
Redémarrez le serveur Kafka avec la 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
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 gâche tout.
Les étapes pour supprimer un ou plusieurs sujets dans Kafka
1. Go to {kafka_home}/config/server.properties
2. Uncomment delete.topic.enable=true
kafka-topics.sh --delete --zookeeper localhost: 2181 --topic
(bon à des fins de test, où j'ai créé plusieurs sujets et ai dû les supprimer pour différents scénarios)
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é. Réessayez les étapes ci-dessus ou redémarrez votre ordinateur.
Vous pouvez supprimer un sujet spécifique de kafka (exemple: test
) à partir de la commande zookeeper Shell (zookeeper-Shell.sh
). Utilisez la commande ci-dessous pour supprimer le sujet.
rmr {path of the topic}
exemple:
rmr /brokers/topics/test
Cette étape supprimera tous les sujets et toutes les données
La commande:
bin/kafka-topics.sh --delete --zookeeper localhost:2181 --topic test
malheureusement, ne marque que le sujet à supprimer.
La suppression ne se produit pas.
Cela pose des problèmes, tout en testant les scripts, qui prépare la configuration de Kafka.
Fils connectés:
Comme mentionné dans le 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
bin/kafka-topics.sh –delete –zookeeper localhost: 2181 –topic
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 retard sera négatif dans les outils de suivi de kafka basés sur zookeeper.
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, accédez au répertoire de journaux kafka qui est normalement placé sous /tmp/kafka-logs/
, puis supprimez le fichier your_topic_name
à l'aide de la commande rm -rf your_topic_name
.
N'oubliez pas de surveiller l'ensemble du processus via un outil de gestion de kafka tel que Kafka Tool
.
Le processus mentionné ci-dessus supprimera les sujets sans redémarrer le serveur Kafka.
Tout d'abord, vous exécutez cette commande pour supprimer votre sujet:
$ bin/kafka-topics.sh --delete --bootstrap-server localhost:9092 --topic <topic_name>
Liste les sujets actifs pour vérifier supprimer complètement:
$ bin/kafka-topics.sh --list --bootstrap-server localhost:9092
Étape 1: Assurez-vous d'être connecté à Zookeeper et à Kafka en cours d'exécution
Étape 2: Pour déléler le sujet Kafka, lancez 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 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