Коли / як остаточно видаляється тема, «позначена для видалення»?


77

Я видав команду на видалення теми:

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

Здавалося, це дало радісну відповідь:

[2014-05-31 20:58:10,112] INFO zookeeper state changed (SyncConnected) (org.I0Itec.zkclient.ZkClient)
Topic "vip_ips_alerts" queued for deletion.

Але ось через 10 хвилин тема все ще з'являється в --listкоманді:

./bin/kafka-topics.sh --zookeeper localhost:2181 --list
vip_ips_alerts - marked for deletion

То що це означає? Коли тема буде дійсно видалена? Як мені пришвидшити цей процес?

Відповіді:


39

ТЛ; ін Набори delete.topic.enable = trueв config/server.propertiesКафки брокерів і ... терпіння.

Це трапляється з останньою версією Kafka 0.8.3-SNAPSHOT для розробки :

➜  kafka_2.11-0.8.3-SNAPSHOT git:(trunk) ✗ ./bin/kafka-topics.sh --zookeeper localhost:2181 --create --topic my-topic --partitions 2 --replication-factor 1
Created topic "my-topic".

➜  kafka_2.11-0.8.3-SNAPSHOT git:(trunk) ✗ ./bin/kafka-topics.sh --zookeeper localhost:2181 --describe --topic my-topic
Topic:my-topic  PartitionCount:2    ReplicationFactor:1 Configs:
    Topic: my-topic Partition: 0    Leader: 0   Replicas: 0 Isr: 0
    Topic: my-topic Partition: 1    Leader: 0   Replicas: 0 Isr: 0

➜  kafka_2.11-0.8.3-SNAPSHOT git:(trunk) ✗ ./bin/kafka-topics.sh --zookeeper localhost:2181 --delete --topic my-topic
Topic my-topic is marked for deletion.
Note: This will have no impact if delete.topic.enable is not set to true.

➜  kafka_2.11-0.8.3-SNAPSHOT git:(trunk) ✗ ./bin/kafka-topics.sh --zookeeper localhost:2181 --list
➜  kafka_2.11-0.8.3-SNAPSHOT git:(trunk) ✗

Справа в тому, щоб мати delete.topic.enable=trueв config/server.propertiesтому, що ви використовуєте для створення брокера Kafka.

➜  kafka_2.11-0.8.3-SNAPSHOT git:(trunk) ✗ grep delete.topic.enable config/server.properties
delete.topic.enable=true

Ви також можете переконатися, що налаштування відповідають дійсності в журналі брокера:

➜  kafka_2.11-0.8.3-SNAPSHOT git:(trunk) ✗ ./bin/kafka-server-start.sh config/server.properties
[2015-07-24 22:33:26,184] INFO KafkaConfig values:
        ...
        delete.topic.enable = true

13
"терпіти" є дещо неточним - я сиджу тут через кілька годин після перезапуску брокерів (0.8.2) і чекаю, поки ці теми зникнуть, але маючи грубу інструкцію щодо того, коли їх насправді не буде, було б корисно. Чи залишатимуться вони цілих сім днів log.retention?
Рік Моріц,

12
Пробувши терпіння протягом тижня, я вважаю, що відповідь у зв’язаному коментарі насправді правильна: Якщо під час створення теми не було встановлено "delete.topic.enable = true", це не буде враховано для видалення.
Рік Моріц,

У мене була така проблема, але після модифікації server.properties і перезапуску kafka і zookeeper журнал показав тему видаленою
Richard Valdivieso

2
Зверніть увагу, що delete.topic.enable тепер за замовчуванням має значення true з 1.0. версія - див. issues.apache.org/jira/browse/KAFKA-5384
xmar

1
У мене є тема, «позначена для видалення» більше доби. Я не можу "терпіти" безкінечно. Мені потрібно видалити тему і рухатися вперед із робочими завданнями.
глина

28

У моєму випадку, коли я використовую Kafka 8.2.2, мені довелося видалити записи з наступних вручну -

  1. Видаліть папку тем з брокера Kafka.
  2. Увійдіть до зоопарка та -

    hbase zkcli
    rmr /brokers/topics/{topic_name}
    rmr /admin/delete_topics/{topic_name}
    

Тільки це працювало для мене, використовував лише команди rmr. За допомогою Kafka 11.0.1 тема для видалення була створена перед тим, як встановити delete.topic.enable на true. Видалення журналів, перезапуск не працювали, оскільки тема залишалася "позначеною для видалення"
Pafnucy

16

Ти можеш це зробити.

sudo ./zookeeper-shell.sh localhost: 2181 rmr / brokers / topics / your_topic


13

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

  1. Спочатку я перевірив правильну конфігурацію. Під: server.properties

    delete.topic.enable = true для всіх брокерів

  2. Я перезапустив брокера, щоб перевірити, чи видалено теми (Ні !!).
  3. Я не перевіряю дані в папці / kafka / data.
  4. Я навіть розглядав можливість почекати, поки час утримання не перевищить.

Жоден не допоміг. Мені довелося нарешті увійти в Zooker

./zkCli.sh # and delete the topics using 
rmr /brokers/topics/<<topic>> and rmr /admin/delete_topics/<<topic>>

Будь ласка, не забудьте перезапустити kafka після цього. Сподіваюся, це вирішить вашу проблему.


Святий ****. Дякую за це!
Ankush92,

Крім того, можна додати, перезавантаження Kafka не було необхідним, принаймні для мене.
Ankush92,

Так, це швидко спрацювало для мене, не потребуючи перезавантаження. Дякую !
Апурв,

4

Правильна відповідь насправді наступна. HOT зі списку групової розсилки електронної пошти користувача Kafka:

François Langelier *@gmail.com über kafka.apache.org 05:57 (вчора)

користувачі Тема видалення не працює в банкоматі

Думаю, він буде доступний у наступному випуску https://issues.apache.org/jira/browse/KAFKA-1397


і, до речі, він з’являється у версії 0.8.1.1 - нещодавно ми зробили оновлення (з 0.8.1) до неї і також спостерігаємо за проблемою
ом-ном-ном

3

Моє питання було щось подібне. Я видалив тему, і вона передавала мені те саме повідомлення, коли я перераховував усі теми.

Я збив доглядача зоопарку та брокера. встановити delete.topic.enable = true у моєму конфігураційному файлі брокера, який запускається zookeeper та boker

Тема зникла ... завдяки Яцеку Ласковському


3

Для версії kafka 0.10.0.0досить увімкнути видалення теми, встановивши:

delete.topic.enable

Тема видаляється протягом декількох хвилин

kafka-topics --delete --zookeeper your-zk:2181 --topic yourTopicName

Ви можете підтвердити, що його немає, за допомогою такої команди:

kafka-topics --describe --zookeeper your-zk:2181 --topic yourTopicName

2

Перевірте статус теми у хранителя зоопарку

bin\windows>kafka-topics.bat --list --zookeeper localhost:2181
Output: topic shows marked for deletion

Встановлення delete.topic.enable = true у server.properties також не спрацювало .

Рішення: Перевірте розташування каталогу даних zookeeper у файлі zookeeper.properties. це був dataDir = / tmp / zookeeper .
Проблему вирішено після оновлення "dataDir" до нового місця.

dataDir=zk-temp
# the port at which the clients will connect
clientPort=2181
# disable the per-ip limit on the number of connections since this is a non-production config
maxClientCnxns=0

1

У нас виникла ця проблема під час видалення тем. Теми були створені, коли delete.topic.enable = true не було встановлено. Ми встановили це в конфігу, перезапустили kafka, щоб застосувати новий конфіг. Видалив теми і побачив "позначено для видалення". Потім ми знову перезапустили kafka. Через 40 хвилин усі теми були видалені (9 тем із загальною кількістю розділів у тисячах). Теми з більшою кількістю розділів, здавалося, зайняли більше часу, що спочатку здавалося, нічого не відбувається.


1

Видалення відбулось у мене майже відразу (v 0.9). Я вважаю, що так само повинно бути і у вас.

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

У мене теми "позначено для видалення" застрягли в цьому стані, поки я не виправив властивості сервера і не перезапустив відповідний вузол.


0

У Kafka, як тільки тема буде позначена для видалення, вона буде остаточно видалена через 60000 мілісекунд.

Перевірте властивість log.segment.delete.delay.ms.

У документації сказано:

file.delete.delay.ms: Час очікування перед видаленням файлу з файлової системи Значення за замовчуванням 60000 мс.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.