【发布时间】:2018-06-15 07:00:12
【问题描述】:
我在 Windows 的 Docker 中托管 Kafka。使用Wurstmeister/Kafka docker 镜像。 Kafka 数据存储在本地 Windows 文件夹中以保持持久性。 Windows 文件夹通过 Docker 卷映射到 Kafka docker 映像。我可以创建主题、发布和使用消息。但是,当我尝试删除主题时,我收到以下错误:
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)
有人可以帮我解决这个问题吗?
UPD:您可以在下面找到我用来运行 Kafka 的 docker-compose 文件的内容:
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
【问题讨论】:
-
Kafka 是否没有足够的权限来执行此操作?请。提供你如何启动这个容器
-
我有一个 docker-compose 文件并使用 docker-compose up -d 启动它。我可以创建主题和发布消息,因此 Kafka 可以访问文件夹。我将使用 docker-compose 文件内容更新帖子。
-
您正在将 /var/lib/kafka 映射到您的主机文件系统。确保允许 kafka 的用户 ID(1000?)写入您的主机路径 kafka_logs。基本上,您需要在主机上为具有相同 ID 的用户提供足够的权限。
-
好的。但正如我所说,我可以创建主题并生成消息。如果我错了,请纠正我 Kafka 可以写入 kafka_logs 吗?
-
@aholbreich 我遇到了同样的问题。请问如何授予足够的权限删除该主题?我试图将 delete.topic.enable 的 Zookeeper 属性设置为 true,它没有帮助。我还尝试将 Eclipse 作为 en 管理运行,但仍然无法正常工作。
标签: windows docker apache-kafka