カフカ愛好家、ここで少し助けが必要です。ファイル\00000000000000000000.timeindex
が別のプロセスで使用されているため、kafka=)を開始できません。ログは次のとおりです。
[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)
同じ問題がありました。私が理解できる唯一の方法は、C:\tmp\kafka-logs
ディレクトリ。その後、kafkaサーバーを起動できました。
データが失われ、オフセットはから始まります。
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
一時的な解決策 ephemeral972によって与えられる2つの方法があります:
私は同じ問題に直面し、kafkaとzookを再起動すると、ウィンドウが機能しませんでした。結構ですが、DEVELOPMENT kafka=サーバーで受け入れ可能です。
dev kafkaサーバー:該当するディレクトリ(たとえば、\ installation\kafka_2.11-0.11.0.0\log\test-0)に移動し、以下を除くすべてのファイルを削除します。
00000000000000000000.index
00000000000000000000.log
00000000000000000000.timeindex
leader-Epoch-checkpoint
その後、kafkaを再起動します。再起動後(zookeeper、kafka)、kafka add a .snapshot
ファイルとすべてが大丈夫だった。
すべての回答は、問題を防ぐ方法ではなく、データを削除することで同じ解決策を提供します。
実際には、KafkaおよびZookeepterを適切に停止する必要があります。
これら2つのコマンドを順番に実行しました。
kafka-server-stop.sh
zookeeper-server-stop.sh
次回起動すると、問題は発生しません。
これは、メッセージを最後に発行してから168時間が経過した後にWindowsでトリガーされる既知の問題のようです。どうやらこの問題は追跡されており、ここで取り組んでいるようです: KAFKA-8145
これには2つの回避策があります。
以下のプロパティを規定の値に更新
# The minimum age of a log file to be eligible for deletion due to age
log.retention.hours=-1
プロパティファイルの最後にこのプロパティを追加します。
log.cleaner.enable=false
基本的に、あなたはKafkaブローカーに古いメッセージを削除しないように言っていることと、すべてのメッセージの年齢が無限である、つまり決して削除されないということです。これは明らかに望ましい状態ではないため、必要なものをすべて消費してからファイル/ディレクトリをクリーンアップできるようにするためにのみこれを行う必要があります(ステップ1)。そして このコメント により、すぐに解決されるようです。
Windowsでkafka=を実行しているときにもこのエラーが発生しました。sever.propertiesファイルのデフォルト設定を変更することで、このエラーを回避できます。
次の手順に従ってください。
ログファイルを保存するディレクトリのコンマ区切りリスト:
log.dirs=/tmp/logs/kafka**
log.dirs=/tmp/logs/kafka
の値を他の値に変更します。例:
log.dirs=/tmp/logs/kafka1
これで問題が解決するはずです。
私は同じ問題に直面し、これは私がそれを解決した方法です。
Server.propertiesのlog.dirsパスを変更しますlog.dirs = C:\ kafka\logs
働いた別の解決策:kafkalogs\test-0が設定されていれば、下のディレクトリからすべてのファイルを削除します
一部のトピックを削除したため、Windowsでも同様の問題が発生しました(それらのトピックからのメッセージのみをフラッシュする他の方法が見つからなかったため)。これは私のために働いたものです。
Change the logs.dir in config/server.properties to new location
Change the dataDir in config/zookeeper.properties to new location
Restart zookeeper and kafka
上記の設定は、zookeeper/kafkaで削除したもの以外のトピックがなくても機能します。設定を保持したい他のトピックがある場合、@ Sumit Dasによって提案されたソリューションが機能する可能性があります。 WindowsでzkCliを起動するときに問題が発生し、ブローカーで削除したトピックしかなかったため、上記の手順を安全に実行して問題を回避できました。
Tmpパスを次のように構成します:(ファイル./config/server.properties内)
log.dirs=d:\tmp\kafka-logs
次に、バックスラッシュ「\」から「/」に変更しました。
log.dirs=d:/tmp/kafka-logs
問題を解決するためのフォルダを作成します