清理集群中的Kafka主题

时间:2018-06-26 09:12:24

标签: apache-kafka

我知道我可以通过删除/ data / kafka-logs / topic / *下的日志或通过将tention.ms config设置为1000来清除代理上的Kafka主题。我想知道如何在多-节点集群。我应该停止每个代理上的Kafka进程,删除日志并启动Kafka还是仅领导经纪就足够了?如果我想通过将retension.ms设置为1000进行清理,是否需要在每个代理上进行设置?

1 个答案:

答案 0 :(得分:0)

要删除特定主题中的所有消息,可以运行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