Видалити тему в Kafka 0.8.1.1


94

Мені потрібно видалити тему testв Apache Kafka 0.8.1.1.

Як зазначено в документації тут , я виконав:

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

Однак це призводить до наступного повідомлення:

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

Як я можу видалити цю тему?


Покрокова процедура пояснюється в: stackoverflow.com/questions/33537950/…
Равіндра бабу

Відповіді:


107

Видалення теми не завжди працює в 0.8.1.1

Видалення має працювати в наступному випуску, 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.

Чи можна видалити тему?

Джира КАФКА-1397


Дякую за інформацію. Чи знаєте ви, як очистити всі штати Кафки та Зоопарка, як зазначено?
EmPak5,

@EmPack IIRC, найпростіший спосіб зробити це (якщо ви не дбаєте про час) - це вимкнути всіх своїх брокерів, видалити журнали для цієї теми та змінити простір імен ZK.
відвертий

95

Схоже, що команда видалення не була офіційно задокументована в Kafka 0.8.1.x через відому помилку ( https://issues.apache.org/jira/browse/KAFKA-1397 ).

Тим не менше, команда все ще була надіслана в коді і може бути виконана як:

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

Тим часом помилка виправлена, і команда видалення тепер офіційно доступна в Kafka 0.8.2.0 як:

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

З того, що я читав, це може працювати 0.8.1.1, але може і не робити ... Виправлення також з певного часу знаходиться в багажнику, тому, якщо ви брали джерела безпосередньо із стовбура, воно мало б працювати
відверто

Я щойно пробував 0.8.1.1, він повідомляє "видалення вдалося", але це не спрацювало. Тема все ще є, я можу залучити споживача, і він повідомить про всі попередні елементи як очікувані.
Еліас Дорнелес,

Видалення тем у Kafka 0.8.1.1 не працює. Нещодавно випущена версія 0.8.2.0 нарешті повинна мати належну підтримку видалення. Дивіться blog.confluent.io/2014/12/02/whats-coming-in-apache-kafka-0-8-2 .
Michael G. Noll

До речі, властивість delete.topic.enable = true може знаходитися у файлі server.properties. За замовчуванням це коментується.
Shanemeister

38

Додайте рядок нижче в $ {kafka_home} /config/server.properties

delete.topic.enable=true

Перезапустіть сервер kafka з новою конфігурацією:

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

Видаліть теми, які ви хочете:

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

10

Андреа має рацію. ми можемо зробити це за допомогою командного рядка.

І ми все ще можемо запрограмувати це

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

Насправді я не рекомендую вам видаляти тему на Kafka 0.8.1.1. Я можу видалити цю тему цим методом, але якщо ви перевірите журнал для зберігача зоопарку, видалення зіпсує його.


Чи повинен він також включати zkClient.deleteRecursive (ZkUtils.getTopicConfigPath ("test2")); та
Суміт

@Sumit, і що? Я не використовував цей "getTopicConfigPath". Насправді я не рекомендую вам видаляти тему на Kafka 0.8.1.1. Я можу видалити цю тему цим методом, але якщо ви перевірите журнал для зберігача зоопарку, видалення зіпсує його.
Лян

але це, як Кафка також робить це (як ви запропонували): apache.googlesource.com/kafka / + / 0.8.1 / core / src / main / scala / kafka / ...
Sumit

@ Суміт. так, я знайшов код звідти. Я не впевнений у цій "брудній" речі. Оскільки як тільки я видаляю тему на моєму сервері компанії, видалення генерує багато сміття в журнал zookeeper. Але я не можу відтворити це у своєму місцевому. Тому я не рекомендую цього ..
Лян

4

Ви можете видалити певну тему kafka (приклад test:) з команди оболонки zookeeper ( zookeeper-shell.sh). Використовуйте команду нижче, щоб видалити тему

rmr {path of the topic}

приклад:

rmr /brokers/topics/test

встановити delete.topic.enable = true, потім видалити з kafka, потім також видалити з zookeeper ...
minhas23

4

Кроки для видалення 1 або більше тем у Kafka

Для видалення тем у kafka опцію видалення потрібно ввімкнути на сервері Kafka.

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

Видалити одну тему в Kafka, введіть наступну команду

kafka-topics.sh --видалити --zookeeper localhost: 2181 --topic

Видалити з kafka більше однієї теми

(добре для цілей тестування, коли я створив кілька тем і мав видаляти їх для різних сценаріїв)

  1. Зупиніть Kafka Server і Zookeeper
  2. перейдіть до папки / tmp, де зберігаються журнали, і видаліть папку kafkalogs та zookeeper вручну
  3. Перезапустіть zookeeper і сервер kafka і спробуйте перерахувати теми,

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

якщо жодної теми не вказано, то всі теми успішно видалено. Якщо теми вказані, то видалення не вдалося. Спробуйте описані вище дії ще раз або перезавантажте комп’ютер.


Зверніть увагу, що для останньої версії Kafka на даний момент (1.0.0) ця опція не відображається у server.propertiesфайлі. Вам потрібно додати цей рядок вручну.
Девід Коррал,

Видалення теми @DavidCorral увімкнено за замовчуванням в 1.0.0
Таннер

2

Ці кроки видалять усі теми та дані

  • Зупиніть Kafka-сервер і Zookeeper-сервер
  • Видаліть каталоги даних tmp обох служб, за замовчуванням це C: / tmp / kafka-logs та C: / tmp / zookeeper.
  • потім запустіть Zookeeper-server та Kafka-server

2

Команда:

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

на жаль, лише позначення теми для видалення.

Видалення не відбувається.

Це створює проблеми під час тестування будь-яких сценаріїв, які готують конфігурацію Kafka.

Підключені потоки:


1

Додаючи до вищезазначених відповідей, потрібно видалити метадані, пов’язані з цією темою, у шляху зміщення споживача зоопарку.

bin/zookeeper-shell.sh zookeeperhost:port

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

В іншому випадку відставання буде негативним у інструментах моніторингу kafka, заснованих на zookeeper.


1

Як вже згадувалось у документі тут

Параметр видалення теми за замовчуванням вимкнено. Щоб увімкнути його, встановіть конфігурацію сервера delete.topic.enable = true Kafka наразі не підтримує зменшення кількості розділів для теми або зміну коефіцієнта реплікації.

Переконайтеся, що delete.topic.enable = true


Я вважаю, що ця опція доступна лише в 8.2
spuder


0

Якщо у вас виникають проблеми з видаленням тем, спробуйте видалити тему за допомогою:

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

команди. Потім, щоб перевірити процес видалення, перейдіть до каталогу журналів kafka, який зазвичай розміщується /tmp/kafka-logs/, а потім видаліть your_topic_nameфайл за допомогою rm -rf your_topic_nameкоманди.

Не забувайте контролювати весь процес за допомогою інструменту управління kafka, наприклад Kafka Tool.

Згаданий вище процес видалить теми без перезапуску сервера kafka.


0

Крок 1: Переконайтеся, що ви підключені до зоопарка та працює Кафка

Крок 2: Щоб видалити тему Kafka, запустіть Kafka-topic (Mac) або Kafka-topic.sh, якщо використовуєте (linux / Mac), додайте порт та --topic з назвою вашої теми та - видаліть, просто видаліть тему за допомогою успіху.

# 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

Спочатку ви запускаєте цю команду, щоб видалити свою тему:

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

Список активних тем для перевірки видалення повністю:

$ bin/kafka-topics.sh --list --bootstrap-server localhost:9092
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.