我在here的帮助下在Windows机器中设置了Kafka服务器和一个zookeeper。我成功地设置了一个主题 - MTETest,如下面的日志,生成和使用此主题的消息。
尝试使用管理员命令提示符中安装时附带的批处理文件停止并启动Kafka和Zookeeper时,我遇到了一个问题,即kafka服务器无法启动以下消息 -
[2017-11-30 21:26:24,601]错误其中一个错误 日志加载期间的线程:java.nio.file.FileSystemException: C:SourceKafkakafka_2.11-0.11.0.1 \ MTETest-0 \ 00000000000000000000.timeindex: 该进程无法访问该文件,因为它正被另一个文件使用 处理。 (kafka.log.LogManager)[2017-11-30 21:26:24,603]致命 [Kafka Server 0],KafkaServer启动期间出现致命错误。准备 shutdown(kafka.server.KafkaServer)java.nio.file.FileSystemException: C:SourceKafkakafka_2.11-0.11.0.1 \ MTETest-0 \ 00000000000000000000.timeindex: 该进程无法访问该文件,因为它正被另一个文件使用 过程
在 sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:86) 在 sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97) 在 sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102) 在 sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:269) 在 sun.nio.fs.AbstractFileSystemProvider.deleteIfExists(AbstractFileSystemProvider.java:108) 在java.nio.file.Files.deleteIfExists(Files.java:1165)at kafka.log.Log $$ anonfun $ loadSegmentFiles $ 3.apply(Log.scala:318)at at kafka.log.Log $$ anonfun $ loadSegmentFiles $ 3.apply(Log.scala:279)at at scala.collection.TraversableLike $ WithFilter $$ anonfun $ $的foreach 1.适用(TraversableLike.scala:733) 在 scala.collection.IndexedSeqOptimized $ class.foreach(IndexedSeqOptimized.scala:33) 在 scala.collection.mutable.ArrayOps $ ofRef.foreach(ArrayOps.scala:186) 在 scala.collection.TraversableLike $ WithFilter.foreach(TraversableLike.scala:732) 在kafka.log.Log.loadSegmentFiles(Log.scala:279)at kafka.log.Log.loadSegments(Log.scala:383)at kafka.log.Log。(Log.scala:186)at kafka.log.Log $ .apply(Log.scala:1609)at kafka.log.LogManager $$ anonfun $ $ loadLogs 2 $$ anonfun $ $$ 5 $ anonfun申请$ 12 $$ anonfun $ $申请$ 1.适用MCV $ SP(LogManager.scala:172) at kafka.utils.CoreUtils $$ anon $ 1.run(CoreUtils.scala:57)at at java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:511) 在java.util.concurrent.FutureTask.run(FutureTask.java:266)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 在 java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:624) 在java.lang.Thread.run(Thread.java:748)[2017-11-30 21:26:24,606] WARN由于要求失败而发现损坏的索引文件:损坏 找到索引,索引文件 (C:\源\卡夫卡\ kafka_2.11-0.11.0.1 \ SourceKafkakafka_2.11-0.11.0.1 \ MTETestTopic-0 \ 00000000000000000000.index) 具有非零大小但最后一个偏移量为0且不大于 基准偏移0.}。删除 C:\源\卡夫卡\ kafka_2.11-0.11.0.1 \ SourceKafkakafka_2.11-0.11.0.1 \ MTETestTopic-0 \ 00000000000000000000.timeindex, C:\源\卡夫卡\ kafka_2.11-0.11.0.1 \ SourceKafkakafka_2.11-0.11.0.1 \ MTETestTopic-0 \ 00000000000000000000.index, 和 C:\源\卡夫卡\ kafka_2.11-0.11.0.1 \ SourceKafkakafka_2.11-0.11.0.1 \ MTETestTopic-0 \ 00000000000000000000.txnindex 和重建指数...(kafka.log.Log)[2017-11-30 21:26:24,609]信息 [Kafka Server 0],关闭(kafka.server.KafkaServer)[2017-11-30 21:26:24,613] INFO终止ZkClient事件线程。 (org.I0Itec.zkclient.ZkEventThread)[2017-11-30 21:26:24,615]警告 由于要求失败,发现损坏的索引文件:损坏索引 发现,索引文件 (C:\源\卡夫卡\ kafka_2.11-0.11.0.1 \ SourceKafkakafka_2.11-0.11.0.1__consumer_offsets-0 \ 00000000000000000000.index) 具有非零大小但最后一个偏移量为0且不大于 基准偏移0.}。删除 C:\源\卡夫卡\ kafka_2.11-0.11.0.1 \ SourceKafkakafka_2.11-0.11.0.1__consumer_offsets-0 \ 00000000000000000000.timeindex, C:\源\卡夫卡\ kafka_2.11-0.11.0.1 \ SourceKafkakafka_2.11-0.11.0.1__consumer_offsets-0 \ 00000000000000000000.index, 和 C:\源\卡夫卡\ kafka_2.11-0.11.0.1 \ SourceKafkakafka_2.11-0.11.0.1__consumer_offsets-0 \ 00000000000000000000.txnindex 和重建指数...(kafka.log.Log)[2017-11-30 21:26:24,616]信息 会话:0x1600d98747a0001已关闭(org.apache.zookeeper.ZooKeeper) [2017-11-30 21:26:24,623] INFO EventThread关闭会话: 0x1600d98747a0001(org.apache.zookeeper.ClientCnxn)[2017-11-30 21:26:24,625] INFO [Kafka Server 0],关闭完成 (kafka.server.KafkaServer)[2017-11-30 21:26:24,626]致命的退出 卡夫卡。 (kafka.server.KafkaServerStartable)[2017-11-30 21:26:24,628] INFO [Kafka Server 0],关闭(kafka.server.KafkaServer)
我已尝试根据kafka server.properties中类似问题here中的建议将设置 - delete.topic.enable更改为true,但它没有帮助。另外,我没有手动打开主题或其相关文件。任何人都面临这个问题,请帮忙。这个问题是否特定于Windows?
当我删除由Kafka创建的主题及其相关的物理文件夹时,它会成功加载,但这不是正确的事情。请建议正确的解决方案。 感谢。
答案 0 :(得分:0)
根据错误消息:
The process cannot access the file because it is being used by another process.
你有另一个进程已经在使用这个文件,这阻止了Kafka的启动。有关查找流程的信息,请参阅https://serverfault.com/questions/1966/how-do-you-find-what-process-is-holding-a-file-open-in-windows