【问题标题】:how to force delete topic from kafka如何从kafka中强制删除主题
【发布时间】:2019-12-01 12:32:48
【问题描述】:

我们执行以下步骤来删除主题 - hgpo.llo.prmt.processed

但即使在 12 小时后主题文件夹仍未从 /var/kafka/kafka-logs

中删除

注意 - 我们设置 - delete.topic.enable=true

  hkafka01 kafka-logs]# /usr/hdp/current/kafka-broker/bin/kafka-topics.sh --zookeeper master01:2181 --alter --topic hgpo.llo.prmt.processed--config retention.ms=1000

  WARNING: Altering topic configuration from this script has been deprecated and may be removed in future releases. Going forward, please use kafka-configs.sh for this functionality Updated config for topic "hgpo.llo.prmt.processedd"

  kafka01 kafka-logs]# /usr/hdp/current/kafka-broker/bin/kafka-topics.sh --zookeeper master01:2181 --delete --topic hgpo.llo.prmt.processed 

  Topic hgpo.llo.prmt.processed is already marked for deletion.

如何强制删除主题?

在 kafka 机器(生产机器)上,我们看到:(没有可用空间)

 /dev/sdb    15500450528 15500434144         0 100% /var/kafka

在 /var/kafka/kafka-logs 下,我们仍然可以看到所有主题文件夹(巨大的大小)作为示例:(向下)

所以是否可以仅删除这些文件夹作为示例 - by

rm -rf hgpo.llo.prmt.processed-28 ?

在 /var/kafka/kafka-logs 下,我们有许多主题文件夹:

 117G hgpo.llo.prmt.processed-28 
 117G hgpo.llo.prmt.processed-29
 117G hgpo.llo.prmt.processed-3
 117G hgpo.llo.prmt.processed-30
 117G hgpo.llo.prmt.processed-31
 117G hgpo.llo.prmt.processed-32

。 .

【问题讨论】:

    标签: apache-kafka


    【解决方案1】:

    删除您一直在尝试的方式应该可以工作,但我猜 Kafka 在满盘时无法正常工作。

    由于您的磁盘已满,我假设 Kafka 不可用,并且可以接受短暂的停机时间。手动删除主题:

    • 关闭 Kafka
    • 在所有拥有 hgpo.llo.prmt.processed 副本的 Kafka 代理上,转到其数据目录并删除以 hgpo.llo.prmt.processed- 开头的文件夹。
    • 使用 zookeeper-shell 工具连接到 Zookeeper
    • 运行:rmr /brokers/topics/hgpo.llo.prmt.processed
    • 重启卡夫卡

    为防止这种情况再次发生,我建议您查看 Kafka 提供的用于控制磁盘使用的保留策略

    【讨论】:

    • 所以我从您的回答中了解到,我可以使用 rm -rf 删除所有主题文件夹,如 hgpo.llo.prmt.processed-28 、 hgpo.llo.prmt.processed-29 等等,你能确认一下吗?
    • 请再问两个问题,我们有 3 个 zookeeper 服务器,我想只做 rmr /brokers/topics/hgpo.llo.prmt.processed 其中一个就足够了,对吗?
    • 我们是否还需要从 ZooKeeper 中删除相应的消费者偏移量 - /consumers//offsets/
    • 是的,你只需要在zookeeper服务器的1台上运行rmr命令即可。如果您仍在运行旧的和已弃用的 Kafka 消费者(0.8),是的,您可以删除存储的偏移量,否则对于当前客户端,偏移量将存储在 Kafka 中,并将根据您的 offsets.retention.minutes 值自动删除(Kafka 1.0 中的默认值) .0 是 7 天)
    • 感谢您的精彩回答,如何验证 Kafka 消费者版本? (在我的卡夫卡机器上,我看到 offsets.retention.minutes=86400000 我们可以将此值设置为 1 天而不是当前值吗?)
    【解决方案2】:

    可以通过直接登录 ZooKeeper shell 并从集群中删除主题元数据来删除标记为删除的 Kafka 主题。我们还建议从与主题关联的每个代理中删除日志段。

    1. 动物园管理员外壳
    2. rmr /config/topics/
    3. rmr /brokers/topics/
    4. rmr /admin/delete_topics/
    5. 对于每个代理:
      • 关闭代理
      • rm -R ${log.dirs}/-*
      • 启动代理

    注意:步骤 5 应小心执行,以确保您只删除要删除的主题的日志目录

    【讨论】:

      猜你喜欢
      • 2020-03-25
      • 2018-11-15
      • 2016-04-17
      • 2019-07-07
      • 1970-01-01
      • 1970-01-01
      • 2016-10-31
      • 1970-01-01
      • 2018-12-18
      相关资源
      最近更新 更多