2017-08-09 57 views
4

卡夫卡爱好者,在这里需要一点帮助。我无法启动kafka,因为\ 00000000000000000000.timeindex文件正被另一个进程使用。以下是日志 -Kafka-无法启动kafka-进程无法访问文件00000000000000000000.timeindex

[2017-08-09 22:49:22,811] FATAL [Kafka Server 0], Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer) 
java.nio.file.FileSystemException: \installation\kafka_2.11-0.11.0.0\log\test-0\00000000000000000000.timeindex: The process cannot access the file because it is being used by another process. 

     at sun.nio.fs.WindowsException.translateToIOException(WindowsException.java:86) 
     at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:97) 
     at sun.nio.fs.WindowsException.rethrowAsIOException(WindowsException.java:102) 
     at sun.nio.fs.WindowsFileSystemProvider.implDelete(WindowsFileSystemProvider.java:269) 
     at sun.nio.fs.AbstractFileSystemProvider.deleteIfExists(AbstractFileSystemProvider.java:108) 
     at java.nio.file.Files.deleteIfExists(Files.java:1165) 
     at kafka.log.Log$$anonfun$loadSegmentFiles$3.apply(Log.scala:311) 
     at kafka.log.Log$$anonfun$loadSegmentFiles$3.apply(Log.scala:272) 
     at scala.collection.TraversableLike$WithFilter$$anonfun$foreach$1.apply(TraversableLike.scala:733) 
     at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33) 
     at scala.collection.mutable.ArrayOps$ofRef.foreach(ArrayOps.scala:186) 
     at scala.collection.TraversableLike$WithFilter.foreach(TraversableLike.scala:732) 
     at kafka.log.Log.loadSegmentFiles(Log.scala:272) 
     at kafka.log.Log.loadSegments(Log.scala:376) 
     at kafka.log.Log.<init>(Log.scala:179) 
     at kafka.log.Log$.apply(Log.scala:1580) 
     at kafka.log.LogManager$$anonfun$loadLogs$2$$anonfun$5$$anonfun$apply$12$$anonfun$apply$1.apply$mcV$sp(LogManager.scala:172) 
     at kafka.utils.CoreUtils$$anon$1.run(CoreUtils.scala:57) 
     at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
     at java.lang.Thread.run(Thread.java:745) 
[2017-08-09 22:49:22,826] INFO [Kafka Server 0], shutting down (kafka.server.KafkaServer) 

回答

7

我有同样的问题。我唯一能想出来的办法就是删除C:\tmp\kafka-logs目录。之后,我能够启动kafka服务器。

你会丢失你的数据,抵消将从开始。

+0

谢谢,这个解决方案工作。 –

+1

有没有其他解决方案没有松散的数据? – Gkan

+0

尝试删除日志像3次现在一旦我得到这个错误,但仍然面临同样的问题:( –

1
java.nio.file.FileSystemException: \installation\kafka_2.11-0.11.0.0\log\test-0\00000000000000000000.timeindex: The process cannot access the file because it is being used by another process. 

00000000000000000000.timeindex被另一个进程使用。因此,您可以使用以下命令删除进程

$ ps aux | grep zookeeper 
$ sudo kill -9 <PID> 

此处PID是动物园管理员的进程ID。


该问题尚未解决。在此描述:https://issues.apache.org/jira/browse/KAFKA-1194

有2种方式为temporary solution通过ephemeral972给出:

  1. [推荐]你需要清理的券商IDS在动物园管理员路径/经纪人/ IDS/[]。使用zk-cli tool delete命令清理路径。启动你的经纪人并验证它向协调员注册。
  2. 解决此问题的另一种方法是将您的broker-id从kafka服务器配置更改并重新启动代理。然而,这会破坏您的分区和数据,不建议
0

跟着上前建议通过@SkyWalker

遵循以下步骤:

  1. 列表item.Open zkCli和进去的一切经纪人。看下面的截图。

    List items inside broker

  2. 进入主题并按双击标签。您将获得此处列出的所有主题。

    List all the topics

  3. 然后删除每个主题。

Delete each topic

0

我在Windows上运行的卡夫卡的同时也得到了这个错误。 您可以通过更改sever.properties文件中的默认配置来避免此错误。

请按照下列步骤操作:

  1. 转到卡夫卡安装的config文件夹。
  2. 打开Server.properties文件
  3. 你会看到配置

以逗号分隔的目录列表要在其中存储日志文件:

log.dirs=/tmp/logs/kafka** 

更改的log.dirs=/tmp/logs/kafka到某一值其他值,例如:

log.dirs=/tmp/logs/kafka1 
  1. 现在再次启动您的kafka服务器。

这应该解决问题。

+0

并再次停止kafka服务器,并试图再次启动它?将log.dirs更改为/ tmp/log/kafka2?;-) – Torgeist