web-dev-qa-db-ja.com

Kafka:開始できませんKafka-プロセスはファイル00000000000000000000.timeindexにアクセスできません

カフカ愛好家、ここで少し助けが必要です。ファイル\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)
21
a_a

同じ問題がありました。私が理解できる唯一の方法は、C:\tmp\kafka-logsディレクトリ。その後、kafkaサーバーを起動できました。

データが失われ、オフセットはから始まります。

32
patelb
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つの方法があります:

  1. [推奨] zookeeperパス/ brokers/ids/[]のブローカーIDをクリーンアップする必要があります。 zk-cliツールのdeleteコマンドを使用して、パスをクリーンアップします。ブローカーを起動して、コーディネーターに登録されていることを確認します。
  2. これを解決するもう1つの方法は、broker-idをkafka server configから変更し、ブローカーを再起動することです。ただし、これによりパーティションとデータが破損する可能性があります
3
SkyWalker

私は同じ問題に直面し、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ファイルとすべてが大丈夫だった。

1
ryry

すべての回答は、問題を防ぐ方法ではなく、データを削除することで同じ解決策を提供します。

実際には、KafkaおよびZookeepterを適切に停止する必要があります。

これら2つのコマンドを順番に実行しました。

kafka-server-stop.sh

zookeeper-server-stop.sh

次回起動すると、問題は発生しません。

1

これは、メッセージを最後に発行してから168時間が経過した後にWindowsでトリガーされる既知の問題のようです。どうやらこの問題は追跡されており、ここで取り組んでいるようです: KAFKA-8145

これには2つの回避策があります。

  1. ここで他の人が提案したように、ログファイルを含むディレクトリをクリーンアップできます(またはバックアップを取り、log.dirsが別のディレクトリを指すようにします)。ただし、この方法では、データが失われます
  2. Server.propertiesファイルに移動し、次の変更を加えます。注:これは、消費者が立ち上がって残りのデータを消費できるようにするための一時的なソリューションであり、データの損失はありません。必要なデータをすべて取得したら、手順1に戻ってデータフォルダーを完全にクリーンアップする必要があります。

以下のプロパティを規定の値に更新

# 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)。そして このコメント により、すぐに解決されるようです。

0
Kiran K

Windowsでkafka=を実行しているときにもこのエラーが発生しました。sever.propertiesファイルのデフォルト設定を変更することで、このエラーを回避できます。

次の手順に従ってください。

  1. kafka installation。のconfigフォルダーに移動します。
  2. Server.propertiesファイルを開きます
  3. 設定が表示されます

ログファイルを保存するディレクトリのコンマ区切りリスト:

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

log.dirs=/tmp/logs/kafkaの値を他の値に変更します。例:

log.dirs=/tmp/logs/kafka1
  1. 次に、kafka-serverを再度起動します。

これで問題が解決するはずです。

0
spock

私は同じ問題に直面し、これは私がそれを解決した方法です。

Server.propertiesのlog.dirsパスを変更しますlog.dirs = C:\ kafka\logs

働いた別の解決策:kafkalogs\test-0が設定されていれば、下のディレクトリからすべてのファイルを削除します

0
user1775015

一部のトピックを削除したため、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を起動するときに問題が発生し、ブローカーで削除したトピックしかなかったため、上記の手順を安全に実行して問題を回避できました。

0
fatcook

@ SkyWalker によって提案されたアプローチに従いました

以下の手順に従ってください:

  1. リスト項目。zkCliを開き、ブローカー内のすべてを取得します。以下のスクリーンショットを参照してください。

    List items inside broker

  2. トピック内に移動してダブルタブを押します。ここにリストされているすべてのトピックを取得できます。

    List all the topics

  3. その後、各トピックを削除します。

Delete each topic

0
Sumit Das

Tmpパスを次のように構成します:(ファイル./config/server.properties内)

log.dirs=d:\tmp\kafka-logs

次に、バックスラッシュ「\」から「/」に変更しました。

log.dirs=d:/tmp/kafka-logs

問題を解決するためのフォルダを作成します

0