如何强制从kafka删除主题

时间:2017-12-01 12:56:16

标签: linux hadoop kafka-consumer-api kafka-producer-api ambari

我们执行以下步骤以删除主题 - 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下,我们仍然看到所有主题文件夹(巨大的)作为示例:(向下)

因此可以通过

删除这些文件夹作为示例
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

2 个答案:

答案 0 :(得分:4)

删除你一直在尝试的方式应该有效,但我猜测Kafka在完整磁盘上效果不佳。

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

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

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

答案 1 :(得分:0)

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

  1. zookeeper-shell
  2. rmr / config / topics /
  3. rmr / brokers / topics /
  4. rmr / admin / delete_topics /
  5. 对于每个经纪人:
    • 关闭经纪人
    • rm -R $ {log.dirs} /-*
    • 启动经纪人

注意:请谨慎执行第5步,以确保仅删除要删除的主题的日志目录