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)
13条答案
按热度按时间blpfk2vs1#
我也面临同样的问题,我就是这样解决的。
更改server.properties log.dirs=c:\kafka\logs中的log.dirs路径
另一个有效的解决方案是:从以下目录中删除所有文件,只要配置了kafkalogs\test-0
kgqe7b3p2#
我在windows上也遇到了类似的问题,部分原因是我删除了几个主题(因为我没有找到其他方法只刷新这些主题中的消息)。这就是我的工作。
当你除了在zookeeper/kafka上删除的内容之外没有其他主题可以满足你的需要时,上述内容显然会起作用,如果还有其他主题你仍然想保留配置,我相信@sumit das提出的解决方案可能会起作用。我在windows上启动zkcli时遇到了一些问题,我只有那些在我的代理上删除的主题,所以我可以安全地执行上述步骤并摆脱它。
7rfyedvj3#
我将tmp路径配置如下:(在file./config/server.properties中)
然后我从反斜杠“\”改为“/”:
并创建文件夹来解决问题
ruarlubt4#
所有答案都提供了相同的解决方案,即删除数据,而不是如何防止问题。
实际上,你只需要适当地阻止Kafka和zookeepter。
您只需按顺序运行这两个命令
下一次当你开始的时候,你不会看到任何问题。
watbbzwu5#
我也有同样的问题。唯一的办法就是删除
C:\tmp\kafka-logs
目录。之后我就可以启动Kafka服务器了。您将丢失数据,偏移量将从0开始。
cunj1qz16#
适用于windows:
在powershell中使用以下命令终止在端口“9092”和“2181”上运行的进程。
对两个端口运行以上命令。
qncylg1j7#
对我来说,它在将日志文件log.dirs=d:/kafka\u 2.13-2.4.0/data/kafka重命名为kafka1后工作。
还修改了log.retention.hours=1,以避免问题重复
ghhkc1vu8#
我也面临同样的问题,重新启动kafka和zook,然后windows对我不起作用。什么对我有效(不要在生产模式下复制它,我不确定它是否可以正常工作,但是它可以被kafka服务器的开发所接受。
在dev kafka服务器上:转到相关目录(例如\installation\kafka\u 2.11-0.11.0.0\log\test-0)并删除除以下文件以外的所有文件:
然后重启Kafka,对我来说没问题,重启后(zookeeper,然后是Kafka),Kafka添加一个
.snapshot
一切都很好。ppcbkaq59#
我在windows上运行kafka时也遇到了这个错误。您可以通过更改sever.properties文件中的默认配置来避免此错误。
请遵循以下步骤:
转到kafka安装的config文件夹。
打开server.properties文件
您将看到配置
存储日志文件的目录的逗号分隔列表:
更改的值
log.dirs=/tmp/logs/kafka
其他值,例如:现在再次启动Kafka服务器。
这应该能解决问题。
kxkpmulp10#
00000000000000.timeindex正在被另一个进程使用。因此,您可以使用以下命令删除进程
这里pid是zookeeper的进程id。
这个问题还没有解决。具体描述如下:https://issues.apache.org/jira/browse/kafka-1194
ephemeral972给出了两种临时解决方案:
[推荐]您需要清理zookeeper path/brokers/ids/[]中的代理ID。使用zk cli tool delete命令清理路径。启动您的代理并验证它是否已向协调员注册。
解决这个问题的另一种方法是从kafka服务器配置中更改代理id并重新启动代理。但是,这会损坏分区,不建议使用数据
ajsxfq5m11#
解决方案:在windows中手动删除日志。重新启动kafka服务器或代理
正在查找日志存储位置。
转到server.properties(服务器属性)#############################
以逗号分隔的目录列表,用于存储日志文件
log.dirs=/此位置/
yftpprvb12#
这似乎是一个已知的问题,在您上次发布消息168小时后,windows上会触发此问题。很明显,这个问题正在这里追踪和研究:Kafka-8145
有两种解决方法:
根据其他人的建议,您可以清理包含日志文件的目录(或者备份并让log.dirs指向另一个目录)。然而,这样你会失去你的数据。
转到server.properties文件并对其进行以下更改。注意:这是一个临时解决方案,允许您的用户访问并使用任何剩余的数据,这样就不会丢失数据。在获得所有需要的数据之后,您应该返回到步骤1,彻底清理数据文件夹。
将下面的属性更新为规定值
在属性文件的末尾添加此属性。
本质上,你所做的是告诉kafka代理不要费心删除旧消息,所有消息的年龄现在是无限的,也就是说它们永远不会被删除。如您所见,这显然不是一个理想的状态,因此您应该这样做,以便您能够使用所需的任何内容,然后清理您的文件/目录(步骤1)。imho表示,上述jira问题正在尽快解决,根据这一评论,它似乎很快就会得到解决。
wa7juj8i13#
遵循@skywalker建议的方法
按照以下步骤操作:
list item.open zkcli并获取代理中的所有内容。请参见下面的屏幕截图。
进入主题并按双制表符。你将得到这里列出的所有主题。
然后删除每个主题。