当Kafka托管在Windows的Docker中时,主题删除期间的异常 [英] Exception during topic deletion when Kafka is hosted in Docker in Windows

查看:287
本文介绍了当Kafka托管在Windows的Docker中时,主题删除期间的异常的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在Windows的Docker中托管Kafka。使用了 Wurstmeister / Kafka 泊坞窗映像。 Kafka数据存储在本地Windows文件夹中以保持持久性。 Windows文件夹通过Docker卷映射到Kafka docker映像。我可以创建主题,发布和使用消息。但是,当我尝试删除主题时,出现以下错误:

I host Kafka in Docker in Windows. Wurstmeister/Kafka docker image is used. Kafka data is stored in local Windows folder for persistency. Windows folder is mapped to Kafka docker image via Docker volumes. I can create topics, publish and consume messages. However when I try to delete topic I receive the following error:

 Error while deleting test-0 in dir /var/lib/kafka. (kafka.server.LogDirFailureChannel)
 java.io.IOException: Failed to rename log directory from /var/lib/kafka/test-0 to /var/lib/kafka/test-0.a81ff9700e4e4c3e8b20c6d949971b64-delete
 at kafka.log.LogManager.asyncDelete(LogManager.scala:671)
 at kafka.cluster.Partition.$anonfun$delete$1(Partition.scala:178)
 at kafka.utils.CoreUtils$.inLock(CoreUtils.scala:217)
 at kafka.utils.CoreUtils$.inWriteLock(CoreUtils.scala:225)
 at kafka.cluster.Partition.delete(Partition.scala:173)
 at kafka.server.ReplicaManager.stopReplica(ReplicaManager.scala:341)
 at kafka.server.ReplicaManager.$anonfun$stopReplicas$2(ReplicaManager.scala:373)
 at scala.collection.Iterator.foreach(Iterator.scala:929)
 at scala.collection.Iterator.foreach$(Iterator.scala:929)
 at scala.collection.AbstractIterator.foreach(Iterator.scala:1417)
 at scala.collection.IterableLike.foreach(IterableLike.scala:71)
 at scala.collection.IterableLike.foreach$(IterableLike.scala:70)
 at scala.collection.AbstractIterable.foreach(Iterable.scala:54)
 at kafka.server.ReplicaManager.stopReplicas(ReplicaManager.scala:371)
 at kafka.server.KafkaApis.handleStopReplicaRequest(KafkaApis.scala:190)
 at kafka.server.KafkaApis.handle(KafkaApis.scala:104)
 at kafka.server.KafkaRequestHandler.run(KafkaRequestHandler.scala:65)
 at java.lang.Thread.run(Thread.java:748)

有人可以帮忙吗我要解决这个问题吗?

Could somebody help me to cope with this issue?

UPD:下面您可以找到我用来运行Kafka的docker-compose文件的内容:

UPD: Below you can find contents of docker-compose file that I use to run Kafka:

version: '3'
services:
  zookeeper:
    image: zookeeper
    ports:
      - "2181:2181"
    environment:
      ZOO_MY_ID: 1
    volumes:
      - ./zookeeper_data:/data
      - ./zookeeper_datalog:/datalog
  kafka:
    depends_on: 
      - zookeeper
    image: wurstmeister/kafka
    ports:
      - "9092:9092"
    environment:
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_ADVERTISED_HOST_NAME: localhost
      KAFKA_LOG_DIRS: /var/lib/kafka
      KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'false'
      KAFKA_BROKER_ID: 1
    volumes:
      - ./kafka_logs:/var/lib/kafka


推荐答案

当我尝试删除主题时,Windows中对于Kafka版本1.1.0(kafka_2.12-1.1.0)仍然存在此问题。

This issue still exists in Windows for Kafka ver 1.1.0 (kafka_2.12-1.1.0) when I try to delete the topic.

该主题被标记为删除,并且在尝试重命名日志目录 test-0时,Kafka服务器由于java.nio.file.AccessDeniedException失败

The topic gets marked for deletion and the Kafka server fails with java.nio.file.AccessDeniedException when trying to rename the logs directory 'test-0'

整个test-0日志文件夹无济于事。
重新安装Kafka服务器也无济于事-即使重新安装后,有关标记为删除的主题的信息仍然保留。

Deleting the whole test-0 logs folder does not help. Reinstalling the Kafka server does not help either - even after reinstalling, the info about the topic marked for deletion remains.

花了我几个小时来弄清楚该信息关于该主题的信息位于Zookeeper中-位于一个日志文件中!

Took me a couple of hours to figure out that the info about the topic sits in the Zookeeper - in one of the log files!

停止Zookeeper进程。
转到您的Zookeeper日志文件夹zookeeper-3.x.x\binozookeeper-3.x.xdata\version-2\,并删除最新的log.xx文件。
重新启动Zookeper。
重新启动Kafka服务器。

Stop the Zookeeper process. Go to your Zookeeper logs folder zookeeper-3.x.x\bin\zookeeper-3.x.xdata\version-2\ and delete the latest log.xx files. Restart Zookeper. Restart Kafka server.

这篇关于当Kafka托管在Windows的Docker中时,主题删除期间的异常的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆