Удалить тему в Kafka 0.8.1.1

98

Мне нужно удалить тему 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

Как мне удалить эту тему?

EmPak5
источник
Пошаговая процедура объясняется в: stackoverflow.com/questions/33537950/…
Равиндра бабу

Ответы:

110

Удаление темы не всегда работает в 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

откровенный
источник
Спасибо за информацию. Вы знаете, как очистить все состояния Kafka и Zookeeper, как указано?
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 .
Майкл Г. Нолл,
Кстати, свойство для 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
daemon12
источник
10

Андреа права. мы можем сделать это из командной строки.

И мы все еще можем его запрограммировать

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

На самом деле я не рекомендую удалять тему на Kafka 0.8.1.1. Я могу удалить эту тему этим методом, но если вы проверите журнал на наличие zookeeper, удаление все испортит.

Лян
источник
Должен ли он также включать zkClient.deleteRecursive (ZkUtils.getTopicConfigPath ("test2")); и
Sumit
@Sumit, а что? Я не использовал этот "getTopicConfigPath". Вообще-то не рекомендую удалять тему на Kafka 0.8.1.1. Я могу удалить эту тему этим методом, но если вы проверите журнал на наличие zookeeper, удаление все испортит.
Лян
но вот как это делает и кафка
Sumit
@Sumit. да, я нашел код оттуда. Я не уверен в этом "беспорядке". Потому что, как только я удаляю тему на сервере моей компании, удаление приводит к появлению большого количества мусора в журнале zookeeper. Но воспроизвести в своем локальном не могу. Так что я не рекомендую это ..
Лян
4

Вы можете удалить конкретную тему testkafka (пример :) с помощью команды оболочки zookeeper ( zookeeper-shell.sh). Используйте команду ниже, чтобы удалить тему

rmr {path of the topic}

пример:

rmr /brokers/topics/test
user1293543
источник
установите 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 --delete --zookeeper localhost: 2181 --topic

Чтобы удалить более одной темы из кафки

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

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

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

если в списке нет ни одной темы, значит все темы были успешно удалены. если темы указаны, значит удаление не было успешным. Повторите описанные выше действия еще раз или перезагрузите компьютер.

CodeUrLife
источник
Обратите внимание, что для последней версии Kafka на данный момент (1.0.0) этот параметр не отображается в server.propertiesфайле. Вы должны добавить эту строку вручную.
Дэвид Коррал
Удаление темы @DavidCorral включено по умолчанию в 1.0.0
Таннер
2

Это действие удалит все темы и данные.

  • Остановить Kafka-server и Zookeeper-server
  • Удалите каталоги данных 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

Добавляя к приведенным выше ответам, необходимо удалить метаданные, связанные с этой темой, в пути смещения потребителя zookeeper.

bin/zookeeper-shell.sh zookeeperhost:port

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

В противном случае в инструментах kafka-monitoring на основе zookeeper задержка будет отрицательной.

Рыцарь71
источник
1

Как упоминалось в документе здесь

По умолчанию опция удаления темы отключена. Чтобы включить его, установите конфигурацию сервера delete.topic.enable = true. Kafka в настоящее время не поддерживает уменьшение количества разделов для темы или изменение коэффициента репликации.

Убедитесь, что delete.topic.enable = true

abmd
источник
Я считаю, что эта опция доступна только в
версии
1
bin/kafka-topics.sh –delete –zookeeper localhost:2181 –topic <topic-name>
Авинав Мишра
источник
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. Убедитесь, что вы подключены к zookeeper и работает Kafka.

Шаг 2: Чтобы удалить тему Kafka, запустите Kafka-topic (Mac) или Kafka-topic.sh, если используете (linux / Mac), добавьте порт и --topic с именем вашей темы и --delete, просто удалите тему с помощью успех.

# 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
источник
0

Сначала вы запускаете эту команду, чтобы удалить свою тему:

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

Перечислите активные темы для полного удаления:

$ bin/kafka-topics.sh --list --bootstrap-server localhost:9092
yuen26
источник