问题描述
限时送ChatGPT账号..我在 Windows 的 Docker 中托管 Kafka.使用 Wurstmeister/Kafka docker 镜像.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 for Kafka ver 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.
主题被标记为删除,并且 Kafka 服务器在尝试重命名日志目录test-0"时出现 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\bin\zookeeper-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屋!
更多推荐
[db:关键词]
发布评论