¿Cómo puedo eliminar un tema en Apache Kafka? [duplicate]

3 minutos de lectura

Avatar de usuario de Rishi Arora
Rishi Arora

Necesito eliminar un tema en Kafka 0.8.2.2.3. He usado el siguiente comando para eliminar el tema:

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

El comando se ejecutó con éxito, pero cuando ejecuto un comando para enumerar los temas, pude ver que el tema todavía está allí y se muestra marcado para borrar.

bin/kafka-topics.sh --list --zookeeper localhost:2181
DummyTopic - marked for deletion

Y cuando creo el tema DummyTopic, genera la excepción. El tema ya existe y, a continuación, se muestra el seguimiento de la pila:

Error while executing topic command Topic "DummyTopic" already exists.
kafka.common.TopicExistsException: Topic "DummyTopic" already exists.
    at kafka.admin.AdminUtils$.createOrUpdateTopicPartitionAssignmentPathInZK(AdminUtils.scala:248)
    at kafka.admin.AdminUtils$.createTopic(AdminUtils.scala:233)
    at kafka.admin.TopicCommand$.createTopic(TopicCommand.scala:92)
    at kafka.admin.TopicCommand$.main(TopicCommand.scala:54)
    at kafka.admin.TopicCommand.main(TopicCommand.scala)

¿Cómo puedo eliminar este tema?

  • Apache Kafka nunca elimina un tema marcado para su eliminación si ese tema tiene productores que aún producen, o consumidores que aún consumen de él, o mensajes que quedan en la cola. Una forma de intentar forzarlo es reiniciar Kafka. O si eso no funciona, vaya debajo del capó y elimine el directorio que es el nombre de su tema en /var/local/kafka/data y luego reinicie Kafka y luego vuelva a emitir el comando de eliminación. Desearía que Apache Kafka tuviera una opción de “nuke the bleeping topic” para que el desarrollador pueda emitir el comando: “Realmente, totes de verdad esta vez bombardee el tema bleeping sin descaro, por favor”.

    –Eric Leschinski

    7 sep 2016 a las 21:07


  • bin/kafka-topics.sh –delete –zookeeper localhost:2181 –tema

    – Avinav Mishra

    21 de febrero de 2017 a las 2:16

  • La opción zookeeper está en desuso, use –bootstrap-server en su lugar. stackoverflow.com/a/53429129/5456789

    – Amir Azizkhani

    6 de julio de 2022 a las 10:40

  • Esto funcionó para mí (dentro de la ventana acoplable): bin/kafka-topics –delete –topic DummyTopic –bootstrap-server localhost:29092

    – Enrico Giurin

    28 de noviembre de 2022 a las 3:46

Avatar de usuario de Ravindra babu
ravindra babu

Se admite la eliminación de un tema desde la versión 0.8.2.x. Tienes que habilitar la eliminación de temas (configuración delete.topic.enable a verdadero) en todos los corredores primero.

Nota: Desde 1.0.x, la funcionalidad es estable, delete.topic.enable es por defecto true.

Siga este proceso paso a paso para la eliminación manual de temas

  1. Detener Kafka servidor
  2. Eliminar el directorio de temas, en cada corredor (como se define en el logs.dirs y log.dir propiedades) con rm -rf dominio
  3. Conectar a cuidador del zoológico instancia: zookeeper-shell.sh host:port
  4. desde dentro de la cuidador del zoológico instancia:
    1. Enumere los temas usando: ls /brokers/topics
    2. Eliminar la carpeta de temas de guardián del zoológico usando: rmr /brokers/topics/yourtopic
    3. Salga de la instancia de Zookeeper (Ctrl+C)
  5. Reanudar Kafka servidor
  6. Confirme si se eliminó o no usando este comando
    kafka-topics.sh --list --zookeeper host:port

  • ¡El enlace está roto!

    – Rubbal

    1 de febrero de 2017 a las 9:39

  • ¿Dónde está el directorio “/brokers/topics”? parece que no puedo encontrar esa carpeta

    – Vipresh

    20 de julio de 2017 a las 11:41

  • no puedo creer que sea tan dificil borrar un tema

    – Erik K.

    16 ago 2019 a las 20:50

  • rmr el comando está en desuso. puedes usar deleteall en lugar de rmr

    – Nafaz MNM

    2 de noviembre de 2020 a las 16:35

  • Visito esta respuesta cada dos semanas. A veces varias veces en una semana.

    – Neelesh

    23 de junio de 2021 a las 7:04

¿Ha sido útil esta solución?