Чистая тема Кафки в кластере - PullRequest
0 голосов
/ 26 июня 2018

Я знаю, что могу очистить тему Kafka в брокере, либо удалив журналы в / data / kafka-logs / topic / *, либо установив в файле retention.ms значение 1000. Я хочу знать, как можно очистить темы в нескольких файлах.узел кластера.Стоит ли останавливать процесс Kafka на каждом брокере, удалять журналы и запускать Kafka, или достаточно только лидера брокера?Если я хочу выполнить очистку, установив для retension.ms значение 1000, нужно ли устанавливать его для каждого брокера?

1 Ответ

0 голосов
/ 26 июня 2018

Чтобы удалить все сообщения в определенной теме, вы можете запустить kafka-delete-records.sh

Например, у меня есть тема под названием test, которая имеет 4 partitions.

Создайте файл Json, например j.json:

{

"partitions": [

    {

        "topic": "test",

        "partition": 0,

        "offset": -1

    }, {

        "topic": "test",

        "partition": 1,

        "offset": -1

    }, {

        "topic": "test",

        "partition": 2,

        "offset": -1

    }, {

        "topic": "test",

        "partition": 3,

        "offset": -1

    }

],

"version": 1

}

Теперь удалите все сообщения этой командой:

/opt/kafka/confluent-4.1.1/bin/kafdelete-records --bootstrap-server 192.168.XX.XX:9092 --offset-json-file j.json

После выполнения команды будет отображаться это сообщение

Records delete operation completed:
partition: test-0   low_watermark: 7
partition: test-1   low_watermark: 7
partition: test-2   low_watermark: 7
partition: test-3   low_watermark: 7

если вы хотите удалить одну тему, вы можете использовать kafka-topics:

например, я хочу удалить test тему:

 /opt/kafka/confluent-4.0.0/bin/kafka-topics --zookeeper 109.XXX.XX.XX:2181  --delete --topic test

Вам не нужно перезапускать Kafka

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...