【问题标题】:Clean Kafka topic in a cluster在集群中清理 Kafka 主题
【发布时间】:2018-06-26 09:12:24
【问题描述】:

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

【问题讨论】:

  • 当您设置主题保留期(设置为任何值,而不仅仅是 1000)时,它已应用于每个副本。除非您希望集群停机,否则不要重启任何东西

标签: apache-kafka


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-12
    • 2021-02-05
    • 2019-01-09
    • 2013-04-23
    • 1970-01-01
    • 2019-05-20
    • 2016-03-17
    相关资源
    最近更新 更多