2017-08-09 169 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