在Kafka托管在Windows中的Docker时,主题删除期间出现异常

Ole*_*rin 7 windows apache-kafka docker

我在Windows中的Docker中托管Kafka.使用Wurstmeister/Kafka泊坞窗图像.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)
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

小智 14

当我尝试删除主题时,Windows for Kafka ver 1.1.0(kafka_2.12-1.1.0)中仍存在此问题.

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

删除整个test-0 logs文件夹没有帮助.重新安装Kafka服务器也无济于事 - 即使重新安装后,仍会显示有关标记为删除主题的信息.

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

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

  • @ylka,它应该位于 Kafka 日志所在的同一文件夹下。更具体地说,如果您在 server.properties 中设置“C:\tmp\kafka-logs”,您将在“C:\tmp\zookeeper”处看到该文件夹​​。 (2认同)
  • Windows 上这个日志文件夹在哪里?因为我找不到它。顺便说一句,我的 Zookeeper 在 Docker 容器中运行? (2认同)

小智 5

从 Zookeeper 日志文件夹中删除版本 2。
删除 Kafka-logs 文件夹中的所有内容。

然后重启Zookeeper和Kafka服务器:

  • zookeeper-server-start.bat D:\kafka_2.11-2.4.1\config\zookeeper.properties
  • kafka-server-start.bat D:\kafka_2.11-2.4.1\config\server.properties