Kafka: невозможно запустить Kafka - процесс не может получить доступ к файлу 00000000000000000000.timeindex

Энтузиаст Кафки, здесь нужна небольшая помощь. Я не могу запустить 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)

Ответ 1

Я была такая же проблема. Единственный способ понять это - это просто удалить каталог C:\tmp\kafka-logs. После этого я смог запустить сервер kafka.

Вы потеряете ваши данные и смещение начнется с 0.

Ответ 2

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:

  1. [Рекомендуется] Вам необходимо очистить идентификаторы брокера в пути/брокерах/курсах zookeeper/ids/[]. Используйте команду удаления zk-cli для очистки путей. Запустите своих брокеров и убедитесь, что они регистрируются вместе с координатором.
  2. Другой способ разрешить это - изменить ваш брокер-идентификатор из конфигурации kafka server и перезапустить брокера. Однако это может привести к повреждению ваших разделов, и данные не рекомендуются

Ответ 3

Все ответы дают одно и то же решение путем удаления данных, а не о том, как предотвратить проблему.

Что на самом деле, вам просто нужно правильно остановить Кафку и Zookeepter.

Вы только что выполнили эти две команды по порядку

kafka-server-stop.sh

zookeeper-server-stop.sh

Тогда в следующий раз, когда вы начнете, вы не увидите проблем.

Ответ 4

Последовал подход, предложенный @SkyWalker

Выполните следующие шаги:

  1. Список item.Open zkCli и получить все внутри брокера. См. Снимок экрана ниже.

    List items inside broker

  2. Перейдите по темам и нажмите двойную вкладку. Вы получите всю указанную здесь тему.

    List all the topics

  3. Затем удалите все темы.

Delete each topic

Ответ 5

Я тоже получил эту ошибку при запуске kafka на окнах. Вы можете избежать этой ошибки, изменив конфигурацию по умолчанию в файле sever.properties.

Выполните следующие действия:

  1. Перейдите в конфигурационную папку установки kafka.
  2. Откройте файл Server.properties.
  3. вы увидите конфигурацию

Список каталогов, разделенных запятыми, для хранения файлов журналов:

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

Измените значение log.dirs=/tmp/logs/kafka на другое значение, например:

log.dirs=/tmp/logs/kafka1
  1. Теперь запустите свой kafka-сервер.

Это должно решить проблему.

Ответ 6

Я столкнулся с той же проблемой, и именно так я ее разрешил.

Измените путь log.dirs в server.properties log.dirs = C:\kafka\logs

Другое решение, которое сработало: удалить все файлы из каталога ниже, где сконфигурирован kafkalogs\test-0

Ответ 7

У меня была аналогичная проблема с окнами, отчасти потому, что я удалил пару тем (так как я не нашел другого способа просто очистить только сообщения от этих тем). Это то, что сработало для меня.

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 в моих окнах, и у меня были только те темы, которые я удалил в своих брокерах, поэтому я мог бы безопасно выполнить описанные выше шаги и избежать этого.

Ответ 8

Я столкнулся с той же проблемой и перезапустил 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 и все было в порядке.

Ответ 9

Похоже, что это известная проблема, возникающая в Windows через 168 часов после последней публикации сообщения. Видимо эта проблема отслеживается и работает здесь: 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, чтобы он не беспокоился об удалении старых сообщений, и что возраст всех сообщений теперь бесконечен, т.е. они никогда не будут удалены. Как вы можете видеть, это явно нежелательное состояние, и, следовательно, вы должны делать это только для того, чтобы вы могли использовать все, что вам нужно, а затем очистить каталог files/(Шаг 1). ИМХО, что упомянутая выше проблема JIRA прорабатывается в ближайшее время, и согласно этому комментарию похоже, что она может быть скоро решена.

Ответ 10

У меня та же проблема со встроенным Kafka, что означает, что на моей машине не установлен сервер Kafka, и поэтому файл server.properties недоступен. Пожалуйста помоги

Ответ 11

Я настраиваю путь tmp как показано ниже: (в файле. /config/server.properties)

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

затем я изменил с обратной косой черты '\' на '/':

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

и создайте папку для решения проблемы