• 手动删除Kafka Topic


    一、删除Kafka topic

       运行./bin/kafka-topics  --delete --zookeeper 【zookeeper server】  --topic 【topic name】;如果kafaka启动时加载的配置文件中server.properties没有配置delete.topic.enable=true,那么此时的删除并不是真正的删除,而是把topic标记为:marked for deletion

      可以通过命令:./bin/kafka-topics --zookeeper 【zookeeper server】 --list 来查看所有topic

      此时若想真正删除它,可以登录zookeeper客户端,命令:./bin/zookeeper-client

      找到topic所在的目录:ls /brokers/topics

      找到要删除的topic,执行命令:rmr /brokers/topics/【topic name】即可,此时topic被彻底删除。

      另外被标记为marked for deletion的topic可以在zookeeper客户端中通过命令获得:ls /admin/delete_topics/【topic name】,如果你删除了此处的topic,那么marked for deletion 标记消失;

    二、Zookeeper数据清理

      下面分四种场景,具体如下:

    1、停止kafka,保持zookeeper仍旧运行

      A.用zookeeper客户端zkClient连接zookeeper,如:

    ./zkCli.sh -server 10.67.2.21:2181,10.67.2.20:2181
    

      连接成功后,可以用命令查看zk的目录结构:

    ls /brokers/topics
    

      然后可以看到该目录下有pjtest目录,删除方式:

    delete /brokers/topics/pjtest/partitions/0/state
     ...
    delete /brokers/topics/pjtest/partitions/9/state
    delete /brokers/topics/pjtest/partitions/0
     ...
    delete /brokers/topics/pjtest/partitions/9
    delete /brokers/topics/pjtest/partitions
    delete /brokers/topics/pjtest
    

    2、停止kafka和zookeeper

    •   查看server.properties中配置的log.dirs路径;
    •  进入此路径中(如果kafka是一个集群,需要在每台机器上执行) 假定要删除的topic名称为:pjtest,则rm -rf pjtest-*;
    • vi replication-offset-checkpoint
      假设原文为:
      0
      15
      pjtest 4 0
      pjtest 8 0
      managejob 5 0
      pjtest 6 0
      pjtest 0 0
      pjtest 5 0
      pjtest 3 0
      pjtest 7 0
      pjtest 9 0
      pjtest 2 0
      managejob 9 0
      managejob 1 0
      managejob 3 0
      pjtest 1 0
      managejob 7 0

      修改为:
      0
      5
      managejob 5 0
      managejob 9 0
      managejob 1 0
      managejob 3 0
      managejob 7 0
    • 同理需要修改vi recovery-point-offset-checkpoint

     3、启动kafka和zookeeper

         一、kafka日志清理

        Kafka将会保留所有发布的消息,不论他们是否被消费过.如果需要清理,则需要进行配置.server.properties配置:
        log.cleanup.policy=delete
        日志清理策略

         log.retention.hours=240
        数据存储的最大时间超过这个时间会根据log.cleanup.policy设置的策略处理数据,也就是消费端能够多久去消费数据

        log.retention.bytes和log.retention.minutes任意一个达到要求,都会执行删除

        log.retention.bytes=-1

        topic每个分区的最大文件大小,一个topic的大小限制=分区数*log.retention.bytes.-1表示没有大小限制
        log.retention.bytes和log.retention.minutes任意一个达到要求,都会执行删除
        log.retention.check.interval.ms=5minutes 文件大小检查的周期时间

  • 相关阅读:
    超详细:idea中同一项目同时使用Git与SVN,切换版本控制
    MailKit在.NetCore5下发送邮件 An error occurred while attempting to establish an SSL or TLS connection
    ClickHouse学习系列之七【系统命令介绍】
    ClickHouse学习系列之六【访问权限和账户管理】
    ClickHouse学习系列之五【系统库system说明】
    ClickHouse学习系列之四【副本&分片部署说明】
    MongoDB4.2 分片扫盲说明
    MongoDB4.2 副本集扫盲说明
    【工程应用一】 多目标多角度的快速模板匹配算法(基于NCC,效果无限接近Halcon中........)
    【工程应用四】 基于形状的多目标多角度的高速模板匹配算法进一步研究。
  • 原文地址:https://www.cnblogs.com/moonandstar08/p/6115557.html
Copyright © 2020-2023  润新知