Usuń temat w Kafce 0.8.1.1


98

Muszę usunąć temat testw Apache Kafka 0.8.1.1.

Jak wynika z niniejszej dokumentacji , wykonałem:

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

Jednak powoduje to następujący komunikat:

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

Jak mogę usunąć ten temat?


Procedura krok po kroku jest wyjaśniona na: stackoverflow.com/questions/33537950/…
Ravindra babu.

Odpowiedzi:


110

Usuwanie tematu nie zawsze działa w 0.8.1.1

Usuwanie powinno działać w następnej wersji 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.

Czy można usunąć temat?

Jira KAFKA-1397


Dzięki za informację. Czy wiesz, jak usunąć wszystkie stany Kafki i Zookeeper, jak wskazano?
EmPak5

@EmPack IIRC, najłatwiejszym sposobem na to (jeśli nie zależy Ci na czasie pracy) jest zamknięcie wszystkich brokerów, usunięcie dzienników dla tego tematu i zmiana przestrzeni nazw ZK.
szczery

95

Wygląda na to, że polecenie usunięcia nie zostało oficjalnie udokumentowane w Kafce 0.8.1.x z powodu znanego błędu ( https://issues.apache.org/jira/browse/KAFKA-1397 ).

Niemniej jednak polecenie zostało nadal wysłane w kodzie i można je wykonać jako:

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

W międzyczasie błąd został naprawiony i polecenie usunięcia jest teraz oficjalnie dostępne w Kafce 0.8.2.0 jako:

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

Z tego co wyczytałem to może zadziałać 0.8.1.1, ale może nie ... Poprawka od jakiegoś czasu jest też w bagażniku, więc jeśli brałeś źródła bezpośrednio z bagażnika to powinno działać
szczery

Właśnie wypróbowałem na 0.8.1.1, wyświetla komunikat „usunięcie powiodło się”, ale nie zadziałało. Temat nadal istnieje, mogę dołączyć konsumenta i zgłosi wszystkie poprzednie pozycje jako oczekujące.
Elias Dorneles

Usuwanie tematów w Kafce 0.8.1.1 nie działa. Niedawno wydana wersja 0.8.2.0 powinna wreszcie mieć odpowiednią obsługę usuwania. Zobacz blog.confluent.io/2014/12/02/whats-coming-in-apache-kafka-0-8-2 .
Michael G. Noll

BTW, właściwość delete.topic.enable = true może znajdować się w pliku server.properties. Jest domyślnie zakomentowany.
Shanemeister

38

Dodaj poniższą linię w $ {kafka_home} /config/server.properties

delete.topic.enable=true

Zrestartuj serwer kafka z nową konfiguracją:

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

Usuń tematy, które chcesz:

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

10

Andrea ma rację. możemy to zrobić za pomocą wiersza poleceń.

I nadal możemy to zaprogramować

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

Właściwie nie polecam usuwania tematu w Kafce 0.8.1.1. Mogę usunąć ten temat tą metodą, ale jeśli sprawdzisz log dla zookeepera, usunięcie zepsuje.


Czy powinien również zawierać zkClient.deleteRecursive (ZkUtils.getTopicConfigPath ("test2")); oraz
Sumit,

@Sumit i co? Nie użyłem tego „getTopicConfigPath”. Właściwie nie polecam usuwania tematu w Kafce 0.8.1.1. Mogę usunąć ten temat tą metodą, ale jeśli sprawdzisz log dla zookeepera, usunięcie zepsuje.
Liang,

ale tak też robi to kafka (tak jak zasugerowałeś): apache.googlesource.com/kafka/+/0.8.1/core/src/main/scala/kafka/…
Sumit

@Sumit. tak, znalazłem stamtąd kod. Nie jestem pewien co do tego „bałaganu”. Ponieważ po usunięciu tematu na serwerze mojej firmy, usunięcie generuje dużo śmieci w dzienniku zookeeper. Ale nie mogę tego odtworzyć w moim lokalnym. Więc nie polecam ...
Liang,

4

Możesz usunąć określony temat kafka (przykład test:) za pomocą polecenia powłoki zookeeper ( zookeeper-shell.sh). Użyj poniższego polecenia, aby usunąć temat

rmr {path of the topic}

przykład:

rmr /brokers/topics/test

ustaw delete.topic.enable = true, następnie usuń z kafki, a następnie usuń również z zookeeper ...
minhas23

4

Kroki, aby usunąć 1 lub więcej tematów w Kafce

Aby usunąć tematy w kafce, należy włączyć opcję usuwania na serwerze Kafka.

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

Usuń jeden temat w Kafce wprowadź następujące polecenie

kafka-topics.sh --usunąć --zookeeper localhost: 2181 --topic

Aby usunąć więcej niż jeden temat z kafki

(dobre do celów testowych, gdzie utworzyłem wiele tematów i musiałem je usunąć dla różnych scenariuszy)

  1. Zatrzymaj serwer Kafka i Zookeeper
  2. przejdź do folderu / tmp, w którym przechowywane są dzienniki, i usuń ręcznie folder kafkalogs i zookeeper
  3. Zrestartuj zookeeper i serwer kafka i spróbuj wyświetlić listę tematów,

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

jeśli na liście nie ma żadnych tematów, wszystkie tematy zostały pomyślnie usunięte. Jeśli na liście znajdują się tematy, usuwanie nie powiodło się. Spróbuj ponownie wykonać powyższe kroki lub uruchom ponownie komputer.


Zwróć uwagę, że w przypadku najnowszej wersji platformy Kafka w tej chwili (1.0.0) ta opcja nie pojawia się w server.propertiespliku. Musisz dodać tę linię ręcznie.
David Corral,

Usuwanie tematu @DavidCorral jest domyślnie włączone w wersji 1.0.0
Tanner

2

Ta czynność spowoduje usunięcie wszystkich tematów i danych

  • Zatrzymaj serwer Kafka i serwer Zookeeper
  • Usuń katalogi danych tmp obu usług, domyślnie są to C: / tmp / kafka-logs i C: / tmp / zookeeper.
  • następnie uruchom serwer Zookeeper i serwer Kafka


1

Dodając powyższe odpowiedzi, należy usunąć metadane związane z tym tematem w ścieżce przesunięcia konsumenta zookeeper.

bin/zookeeper-shell.sh zookeeperhost:port

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

W przeciwnym razie opóźnienie będzie negatywne w narzędziach do monitorowania kafka opartych na zookeeper.


1

Jak wspomniano w dokumencie tutaj

Opcja usuwania tematu jest domyślnie wyłączona. Aby to włączyć, ustaw konfigurację serwera delete.topic.enable = true Kafka obecnie nie obsługuje zmniejszania liczby partycji dla tematu ani zmiany współczynnika replikacji.

Upewnij się, że delete.topic.enable = true


Uważam, że opcja jest dostępna tylko w 8.2
spuder


0

Jeśli masz problemy z usunięciem tematów, spróbuj usunąć temat za pomocą:

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

Komenda. Następnie, aby zweryfikować proces usuwania, przejdź do katalogu logów kafka, w którym normalnie się znajduje /tmp/kafka-logs/, a następnie usuń your_topic_nameplik poprzezrm -rf your_topic_name polecenia.

Pamiętaj, aby monitorować cały proces za pomocą narzędzia do zarządzania kafka, takiego jak Kafka Tool .

Wspomniany powyżej proces usunie tematy bez restartu serwera kafka.


0

Krok 1: Upewnij się, że masz połączenie z zookeeper i uruchomionym Kafką

Krok 2: Aby usunąć temat Kafki, uruchom Kafka-topic (Mac) lub Kafka-topic.sh, jeśli używasz (linux / Mac), dodaj port i --topic z nazwą twojego tematu i - usuń go po prostu usuń temat za pomocą sukces.

# 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

Najpierw uruchom to polecenie, aby usunąć temat:

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

Wyświetl listę aktywnych tematów, aby sprawdzić, czy usunąć całkowicie:

$ bin/kafka-topics.sh --list --bootstrap-server localhost:9092
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.