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?

EmPak5
źródło
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

szczery
źródło
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
Andrea
źródło
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
daemon12
źródło
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.

Liang
źródło
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
user1293543
źródło
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.

CodeUrLife
źródło
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
Venkatesh Boya
źródło
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.

Rycerz71
źródło
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

abmd
źródło
Uważam, że opcja jest dostępna tylko w 8.2
spuder
1
bin/kafka-topics.sh –delete –zookeeper localhost:2181 –topic <topic-name>
Avinav Mishra
źródło
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.

Vahid F.
źródło
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
Black_Dreams
źródło
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
yuen26
źródło