Elimina argomento in Kafka 0.8.1.1


92

Devo eliminare l'argomento testin Apache Kafka 0.8.1.1.

Come espresso nella documentazione qui , ho eseguito:

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

Tuttavia, questo risulta nel seguente messaggio:

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

Come posso eliminare questo argomento?


La procedura passo passo è spiegata in: stackoverflow.com/questions/33537950/…
Ravindra babu

Risposte:


107

L'eliminazione dell'argomento non funziona sempre nella 0.8.1.1

L'eliminazione dovrebbe funzionare nella prossima versione, la 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.

È possibile eliminare un argomento?

Jira KAFKA-1397


Grazie per le informazioni. Sai come cancellare l'intero stato di Kafka e Zookeeper come indicato?
EmPak5

@EmPack IIRC, il modo più semplice per farlo (se non ti interessa il tempo di attività) è chiudere tutti i tuoi broker, eliminare i log per quell'argomento e cambiare il tuo spazio dei nomi ZK.
franco

95

Sembra che il comando di cancellazione non sia stato ufficialmente documentato in Kafka 0.8.1.x a causa di un bug noto ( https://issues.apache.org/jira/browse/KAFKA-1397 ).

Tuttavia, il comando è stato ancora fornito nel codice e può essere eseguito come:

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

Nel frattempo, il bug è stato corretto e il comando di cancellazione è ora ufficialmente disponibile da Kafka 0.8.2.0 come:

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

Da quello che ho letto, potrebbe funzionare 0.8.1.1, ma potrebbe non funzionare ... La correzione è anche nel bagagliaio da un po ', quindi se hai preso i sorgenti direttamente dal tronco, dovrebbe funzionare
franco

Ho appena provato la versione 0.8.1.1, segnala "eliminazione riuscita" ma non ha funzionato. L'argomento è ancora lì, posso allegare un consumatore e segnalerà tutti gli articoli precedenti come in sospeso.
Elias Dorneles

L'eliminazione degli argomenti in Kafka 0.8.1.1 non funziona. La versione 0.8.2.0 rilasciata di recente dovrebbe finalmente avere un adeguato supporto per l'eliminazione. Vedi blog.confluent.io/2014/12/02/whats-coming-in-apache-kafka-0-8-2 .
Michael G. Noll

A proposito, la proprietà per delete.topic.enable = true può essere individuata nel file server.properties. È commentato per impostazione predefinita.
Shanemeister

37

Aggiungi sotto la riga in $ {kafka_home} /config/server.properties

delete.topic.enable=true

Riavvia il server kafka con la nuova configurazione:

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

Elimina gli argomenti che desideri:

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

10

Andrea ha ragione. possiamo farlo usando la riga di comando.

E possiamo ancora programmarlo, entro

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

In realtà non ti consiglio di eliminare topic su Kafka 0.8.1.1. Posso eliminare questo argomento con questo metodo, ma se controlli il registro per il guardiano dello zoo, l'eliminazione lo rovina.


Dovrebbe includere anche zkClient.deleteRecursive (ZkUtils.getTopicConfigPath ("test2")); e
Sumit

@ Sumit, e cosa? Non ho usato "getTopicConfigPath". In realtà non ti consiglio di eliminare topic su Kafka 0.8.1.1. Posso eliminare questo argomento con questo metodo, ma se controlli il registro per il guardiano dello zoo, l'eliminazione lo rovina.
Liang

ma è così che fa anche kafka
Sumit

@Sumit. si, ho trovato il codice da lì. Non sono sicuro di quella cosa "incasinata". Perché una volta eliminato un argomento sul server della mia azienda, l'eliminazione genera molta spazzatura nel registro del guardiano dello zoo. Ma non posso riprodurlo nel mio locale. Quindi non lo consiglio ..
Liang

4

È possibile eliminare uno specifico argomento di kafka (esempio test:) dal comando della shell di zookeeper ( zookeeper-shell.sh). Usa il comando seguente per eliminare l'argomento

rmr {path of the topic}

esempio:

rmr /brokers/topics/test

imposta delete.topic.enable = true, quindi elimina da kafka quindi elimina anche da guardiano dello zoo ...
minhas23

4

Procedura per eliminare 1 o più argomenti in Kafka

Per eliminare gli argomenti in Kafka, l'opzione di eliminazione deve essere abilitata nel server Kafka.

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

Elimina un argomento in Kafka, inserisci il seguente comando

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

Per eliminare più di un argomento da kafka

(buono a scopo di test, in cui ho creato più argomenti e ho dovuto eliminarli per diversi scenari)

  1. Arresta il server Kafka e lo Zookeeper
  2. vai alla cartella / tmp in cui sono archiviati i registri ed elimina manualmente le cartelle kafkalogs e zookeeper
  3. Riavvia il guardiano dello zoo e il server kafka e prova a elencare gli argomenti,

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

se non sono elencati argomenti, tutti gli argomenti sono stati eliminati correttamente. Se gli argomenti sono elencati, l'eliminazione non è riuscita. Prova di nuovo i passaggi precedenti o riavvia il computer.


Nota che per l'ultima versione di Kafka al momento (1.0.0) tale opzione non appare nel server.propertiesfile. Devi aggiungere quella linea manualmente.
David Corral

L'eliminazione dell'argomento @DavidCorral è abilitata per impostazione predefinita nella 1.0.0
Tanner

2

Questa procedura eliminerà tutti gli argomenti e i dati

  • Arresta il server Kafka e il server Zookeeper
  • Rimuovere le directory dei dati tmp di entrambi i servizi, per impostazione predefinita sono C: / tmp / kafka-logs e C: / tmp / zookeeper.
  • quindi avvia Zookeeper-server e Kafka-server


1

Aggiungendo alle risposte precedenti è necessario eliminare i metadati associati a quell'argomento nel percorso di offset del consumatore di guardiano dello zoo.

bin/zookeeper-shell.sh zookeeperhost:port

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

Altrimenti il ​​ritardo sarà negativo negli strumenti di monitoraggio di kafka basati sul guardiano dello zoo.


1

Come menzionato nel documento qui

L'opzione di eliminazione dell'argomento è disabilitata per impostazione predefinita. Per abilitarlo impostare il server config delete.topic.enable = true Kafka attualmente non supporta la riduzione del numero di partizioni per un argomento o la modifica del fattore di replica.

Assicurati che delete.topic.enable = true


Credo che l'opzione sia disponibile solo in 8.2
spuder

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

0

Se hai problemi con l'eliminazione degli argomenti, prova a eliminare l'argomento utilizzando:

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

comando. Quindi, per verificare il processo di eliminazione, vai alla directory dei log di kafka che normalmente si trova sotto /tmp/kafka-logs/, quindi elimina il your_topic_namefile tramite rm -rf your_topic_namecomando.

Ricorda di monitorare l'intero processo tramite uno strumento di gestione di kafka come Kafka Tool.

Il processo sopra menzionato rimuoverà gli argomenti senza riavviare il server kafka.


0

Passaggio 1: assicurati di essere connesso al guardiano dello zoo e che Kafka sia in esecuzione

Passaggio 2: per eliminare l'argomento Kafka eseguire Kafka-topic (Mac) o Kafka-topic.sh se si usa (linux / Mac) aggiungere la porta e --topic con il nome dell'argomento e --delete eliminare l'argomento con successo.

# 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

Innanzitutto, esegui questo comando per eliminare il tuo argomento:

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

Elenca gli argomenti attivi per controllare l'eliminazione completa:

$ bin/kafka-topics.sh --list --bootstrap-server localhost:9092
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.