首页 > 解决方案 > 卡夫卡崩溃后,偏移量丢失

问题描述

我们的 kafka 系统崩溃了,因为没有可用的磁盘空间。消费者是使用 Kafka Streams API 的 Spring Boot 应用程序。现在每个消费者应用程序都显示以下错误:

java.io.FileNotFoundException: /tmp/kafka-streams/908a79bc-92e7-4f9c-a63a-5030cf4d3555/streams.device-identification-parser/0_48/.checkpoint.tmp (No such file or directory)

这个异常正好发生在 kafka 服务器重启之后。如果我们重新启动应用程序,服务将从偏移量 0 开始重播来自消费主题的所有消息。这是致命的。

我们检查了日志:在每个分区上都没有信息(示例行,我们有 60 个分区):

TOPIC                               PARTITION  CURRENT-OFFSET  LOG-END-OFFSET  LAG             CONSUMER-ID                                                                                                                            HOST            CLIENT-ID
device-identification.received      0          -               0               -               streams.device-identification-parser-3e81ef05-b9e3-495c-85b3-7e2912f00578-StreamThread-1-consumer-ca723291-3258-46c0-8b23-233bdc1e1191 /XX.X.X.X       streams.device-identification-parser-3e81ef05-b9e3-495c-85b3-7e2912f00578-StreamThread-1-consumer

谁能帮我恢复偏移信息,服务从最后一个偏移开始?

标签: javaapache-kafkakafka-consumer-apiapache-kafka-streamsspring-kafka

解决方案


如果这是一个 Kafka Streams 应用程序,您可能会成功重置它,这可以使用 Confluent 的应用程序重置工具来完成:https ://docs.confluent.io/current/streams/developer-guide/app-reset-tool.html


推荐阅读