Ответ 1
Я была такая же проблема. Единственный способ понять это - это просто удалить каталог C:\tmp\kafka-logs
. После этого я смог запустить сервер kafka.
Вы потеряете ваши данные и смещение начнется с 0.
Энтузиаст Кафки, здесь нужна небольшая помощь. Я не могу запустить 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)
Я была такая же проблема. Единственный способ понять это - это просто удалить каталог C:\tmp\kafka-logs
. После этого я смог запустить сервер kafka.
Вы потеряете ваши данные и смещение начнется с 0.
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 - это идентификатор процесса zookeeper.
Проблема еще не исправлена. Он описан здесь: https://issues.apache.org/jira/browse/KAFKA-1194
Существует 2 способа временного решения, данные ephemeral972:
Все ответы дают одно и то же решение путем удаления данных, а не о том, как предотвратить проблему.
Что на самом деле, вам просто нужно правильно остановить Кафку и Zookeepter.
Вы только что выполнили эти две команды по порядку
kafka-server-stop.sh
zookeeper-server-stop.sh
Тогда в следующий раз, когда вы начнете, вы не увидите проблем.
Последовал подход, предложенный @SkyWalker
Выполните следующие шаги:
Я тоже получил эту ошибку при запуске kafka на окнах. Вы можете избежать этой ошибки, изменив конфигурацию по умолчанию в файле sever.properties.
Выполните следующие действия:
Список каталогов, разделенных запятыми, для хранения файлов журналов:
log.dirs=/tmp/logs/kafka**
Измените значение log.dirs=/tmp/logs/kafka
на другое значение, например:
log.dirs=/tmp/logs/kafka1
Это должно решить проблему.
Я столкнулся с той же проблемой, и именно так я ее разрешил.
Измените путь log.dirs в server.properties log.dirs = C:\kafka\logs
Другое решение, которое сработало: удалить все файлы из каталога ниже, где сконфигурирован kafkalogs\test-0
У меня была аналогичная проблема с окнами, отчасти потому, что я удалил пару тем (так как я не нашел другого способа просто очистить только сообщения от этих тем). Это то, что сработало для меня.
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, может работать, У меня возникли проблемы с запуском zkCli в моих окнах, и у меня были только те темы, которые я удалил в своих брокерах, поэтому я мог бы безопасно выполнить описанные выше шаги и избежать этого.
Я столкнулся с той же проблемой и перезапустил 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) .snapshot
файл .snapshot
и все было в порядке.
Похоже, что это известная проблема, возникающая в Windows через 168 часов после последней публикации сообщения. Видимо эта проблема отслеживается и работает здесь: 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, чтобы он не беспокоился об удалении старых сообщений, и что возраст всех сообщений теперь бесконечен, т.е. они никогда не будут удалены. Как вы можете видеть, это явно нежелательное состояние, и, следовательно, вы должны делать это только для того, чтобы вы могли использовать все, что вам нужно, а затем очистить каталог files/(Шаг 1). ИМХО, что упомянутая выше проблема JIRA прорабатывается в ближайшее время, и согласно этому комментарию похоже, что она может быть скоро решена.
У меня та же проблема со встроенным Kafka, что означает, что на моей машине не установлен сервер Kafka, и поэтому файл server.properties недоступен. Пожалуйста помоги
Я настраиваю путь tmp как показано ниже: (в файле. /config/server.properties)
log.dirs=d:\tmp\kafka-logs
затем я изменил с обратной косой черты '\' на '/':
log.dirs=d:/tmp/kafka-logs
и создайте папку для решения проблемы
Я нашел ответ здесь. Измените значение в файле свойств сервера . Процесс не может получить доступ к файлу, поскольку он используется другим процессом.