Eliminar tema en Kafka 0.8.1.1

94

Necesito eliminar el tema testen Apache Kafka 0.8.1.1.

Como se expresa en la documentación aquí , he ejecutado:

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

Sin embargo, esto da como resultado el siguiente mensaje:

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

¿Cómo puedo eliminar este tema?

EmPak5
fuente
El procedimiento paso a paso se explica en: stackoverflow.com/questions/33537950/…
Ravindra babu

Respuestas:

107

Eliminar un tema no siempre funciona en 0.8.1.1

La eliminación debería funcionar en la próxima versión, 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.

¿Es posible eliminar un tema?

Jira KAFKA-1397

franco
fuente
Gracias por la info. ¿Sabe cómo borrar todos los estados de Kafka y Zookeeper como se indica?
EmPak5
@EmPack IIRC, la forma más fácil de hacerlo (si no le importa el tiempo de actividad) es cerrar todos sus corredores, eliminar sus registros para ese tema y cambiar su espacio de nombres ZK.
franco
95

Parece que el comando de eliminación no se documentó oficialmente en Kafka 0.8.1.x debido a un error conocido ( https://issues.apache.org/jira/browse/KAFKA-1397 ).

Sin embargo, el comando todavía se envió en el código y se puede ejecutar como:

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

Mientras tanto, el error se solucionó y el comando de eliminación ahora está oficialmente disponible en Kafka 0.8.2.0 como:

bin/kafka-topics.sh --delete --zookeeper localhost:2181 --topic test
Andrea
fuente
Por lo que leí, podría funcionar 0.8.1.1, pero puede que no ... La solución también está en el tronco desde hace un tiempo, por lo que si tomó las fuentes directamente del tronco, debería funcionar
franco
Acabo de probar con 0.8.1.1, informa "la eliminación se realizó correctamente" pero no funcionó. El tema todavía está ahí, puedo adjuntar un consumidor e informará todos los elementos anteriores como pendientes.
Elias Dorneles
Eliminar temas en Kafka 0.8.1.1 no funciona. La versión 0.8.2.0 recientemente lanzada debería tener finalmente el soporte de eliminación adecuado. Ver blog.confluent.io/2014/12/02/whats-coming-in-apache-kafka-0-8-2 .
Michael G. Noll
Por cierto, la propiedad de delete.topic.enable = true se puede ubicar en el archivo server.properties. Está comentado por defecto.
Shanemeister
38

Agregue la siguiente línea en $ {kafka_home} /config/server.properties

delete.topic.enable=true

Reinicie el servidor kafka con una nueva configuración:

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

Elimina los temas que deseas:

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

Andrea tiene razón. podemos hacerlo usando la línea de comando.

Y todavía podemos programarlo,

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

En realidad, no te recomiendo que elimines el tema en Kafka 0.8.1.1. Puedo eliminar este tema con este método, pero si revisa el registro para el guardián del zoológico, la eliminación lo estropea.

Liang
fuente
¿Debería incluir también zkClient.deleteRecursive (ZkUtils.getTopicConfigPath ("test2")); y
Sumit
@Sumit, ¿y qué? No utilicé ese "getTopicConfigPath". En realidad, no te recomiendo que elimines el tema en Kafka 0.8.1.1. Puedo eliminar este tema con este método, pero si revisa el registro para el guardián del zoológico, la eliminación lo estropea.
Liang
pero así es como kafka también lo hace (de la manera que sugirió): apache.googlesource.com/kafka/+/0.8.1/core/src/main/scala/kafka/…
Sumit
@Sumit. sí, encontré el código de allí. No estoy seguro de esa cosa "desordenada". Porque una vez que elimino un tema en el servidor de mi empresa, la eliminación genera mucha basura en el registro del guardián del zoológico. Pero no puedo reproducirlo en mi local. Así que no recomiendo eso ..
Liang
4

Puede eliminar un tema kafka específico (ejemplo test:) del comando de shell zookeeper ( zookeeper-shell.sh). Utilice el siguiente comando para eliminar el tema

rmr {path of the topic}

ejemplo:

rmr /brokers/topics/test
usuario1293543
fuente
establezca delete.topic.enable = true, luego elimine de kafka y luego también elimine de zookeeper ...
minhas23
4

Pasos para eliminar 1 o más temas en Kafka

Para eliminar temas en kafka, la opción de eliminación debe estar habilitada en el servidor de Kafka.

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

Eliminar un tema en Kafka ingrese el siguiente comando

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

Para eliminar más de un tema de kafka

(bueno para propósitos de prueba, donde creé varios temas y tuve que eliminarlos para diferentes escenarios)

  1. Detenga Kafka Server y Zookeeper
  2. vaya a la carpeta / tmp donde se almacenan los registros y elimine la carpeta kafkalogs y zookeeper manualmente
  3. Reinicie el zookeeper y el servidor kafka e intente enumerar los temas,

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

Si no hay temas en la lista, todos los temas se han eliminado correctamente. Si los temas están en la lista, la eliminación no se realizó correctamente. Intente los pasos anteriores nuevamente o reinicie su computadora.

CodeUrLife
fuente
Tenga en cuenta que para la última versión de Kafka en este momento (1.0.0) esa opción no aparece en el server.propertiesarchivo. Tienes que agregar esa línea manualmente.
David Corral
La eliminación de temas de @DavidCorral está habilitada de forma predeterminada en 1.0.0
Tanner
2

Estos pasos eliminarán todos los temas y datos

  • Detener Kafka-server y Zookeeper-server
  • Elimina los directorios de datos tmp de ambos servicios, por defecto son C: / tmp / kafka-logs y C: / tmp / zookeeper.
  • luego inicie Zookeeper-server y Kafka-server
Venkatesh Boya
fuente
1

Agregando a las respuestas anteriores, uno tiene que eliminar los metadatos asociados con ese tema en la ruta de compensación del consumidor del zookeeper.

bin/zookeeper-shell.sh zookeeperhost:port

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

De lo contrario, el retraso será negativo en las herramientas de monitoreo de kafka basadas en zookeeper.

Caballero71
fuente
1

Como se menciona en el documento aquí

La opción de eliminación de tema está deshabilitada de forma predeterminada. Para habilitarlo, establezca la configuración del servidor delete.topic.enable = true. Actualmente, Kafka no admite la reducción del número de particiones de un tema o el cambio del factor de replicación.

Asegúrese de eliminar.topic.enable = true

abmd
fuente
Creo que la opción solo está disponible en 8.2
spuder
1
bin/kafka-topics.sh –delete –zookeeper localhost:2181 –topic <topic-name>
Avinav Mishra
fuente
0

Si tiene problemas para eliminar los temas, intente eliminar el tema usando:

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

mando. Luego, para verificar el proceso de eliminación, vaya al directorio de registros de kafka que normalmente se encuentra debajo /tmp/kafka-logs/, luego elimine el your_topic_namearchivo mediante el rm -rf your_topic_namecomando.

Recuerde monitorear todo el proceso a través de una herramienta de administración de kafka como Kafka Tool.

El proceso mencionado anteriormente eliminará los temas sin reiniciar el servidor kafka.

Vahid F
fuente
0

Paso 1: asegúrese de estar conectado a Zookeeper y Kafka en ejecución

Paso 2: Para eliminar el tema de Kafka, ejecute Kafka-topic (Mac) o Kafka-topic.sh si usa (linux / Mac) agregue el puerto y --topic con el nombre de su tema y --elimítelo, simplemente elimine el tema con éxito.

# 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
Black_Dreams
fuente
0

Primero, ejecuta este comando para eliminar su tema:

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

Enumere los temas activos para marcar eliminar completamente:

$ bin/kafka-topics.sh --list --bootstrap-server localhost:9092
yuen26
fuente