Flink Kafka 问题记录

文章描述了在使用Flink处理数据流并尝试将结果发送到Kafka时遇到的问题,具体表现为Checkpoint失败,原因是Kafka记录过期以及主题未在元数据中找到。异常堆栈跟踪显示在执行快照和发送数据到Kafka时出现了问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题记录
Failed to send data to Kafka: Expiring 1 record(s) for xxx-0120000 ms has passed since batch creation

查看:https://huaweicloud.youkuaiyun.com/633562ccd3efff3090b55024.html#_Could_not_complete_snapshot_1_for_operator_Sink_kafkasink_140_Failure_reason_Checkpoint_was_declined_598,问题三十

2023-04-19 21:33:50
java.lang.Exception: Could not perform checkpoint 27555 for operator Source: Custom Source -> Map -> Process -> Process -> Sink: 环卫车主题 (1/1)#0.
	at org.apache.flink.streaming.runtime.tasks.StreamTask.triggerCheckpointAsyncInMailbox(StreamTask.java:1006)
	at org.apache.flink.streaming.runtime.tasks.StreamTask.lambda$triggerCheckpointAsync$7(StreamTask.java:958)
	at org.apache.flink.streaming.runtime.tasks.StreamTaskActionExecutor$SynchronizedStreamTaskActionExecutor.runThrowing(StreamTaskActionExecutor.java:93)
	at org.apache.flink.streaming.runtime.tasks.mailbox.Mail.run(Mail.java:90)
	at org.apache.flink.streaming.runtime.tasks.mailbox.MailboxProcessor.processMailsWhenDefaultActionUnavailable(MailboxProcessor.java:344)
	at org.apache.flink.streaming.runtime.tasks.mailbox.MailboxProcessor.processMail(MailboxProcessor.java:330)
	at org.apache.flink.streaming.runtime.tasks.mailbox.MailboxProcessor.runMailboxLoop(MailboxProcessor.java:202)
	at org.apache.flink.streaming.runtime.tasks.StreamTask.runMailboxLoop(StreamTask.java:684)
	at org.apache.flink.streaming.runtime.tasks.StreamTask.executeInvoke(StreamTask.java:639)
	at org.apache.flink.streaming.runtime.tasks.StreamTask.runWithCleanUpOnFail(StreamTask.java:650)
	at org.apache.flink.streaming.runtime.tasks.StreamTask.invoke(StreamTask.java:623)
	at org.apache.flink.runtime.taskmanager.Task.doRun(Task.java:779)
	at org.apache.flink.runtime.taskmanager.Task.run(Task.java:566)
	at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.flink.runtime.checkpoint.CheckpointException: Could not complete snapshot 27555 for operator Source: Custom Source -> Map -> Process -> Process -> Sink: 环卫车主题 (1/1)#0. Failure reason: Checkpoint was declined.
	at org.apache.flink.streaming.api.operators.StreamOperatorStateHandler.snapshotState(StreamOperatorStateHandler.java:264)
	at org.apache.flink.streaming.api.operators.StreamOperatorStateHandler.snapshotState(StreamOperatorStateHandler.java:169)
	at org.apache.flink.streaming.api.operators.AbstractStreamOperator.snapshotState(AbstractStreamOperator.java:371)
	at org.apache.flink.streaming.runtime.tasks.SubtaskCheckpointCoordinatorImpl.checkpointStreamOperator(SubtaskCheckpointCoordinatorImpl.java:706)
	at org.apache.flink.streaming.runtime.tasks.SubtaskCheckpointCoordinatorImpl.buildOperatorSnapshotFutures(SubtaskCheckpointCoordinatorImpl.java:627)
	at org.apache.flink.streaming.runtime.tasks.SubtaskCheckpointCoordinatorImpl.takeSnapshotSync(SubtaskCheckpointCoordinatorImpl.java:590)
	at org.apache.flink.streaming.runtime.tasks.SubtaskCheckpointCoordinatorImpl.checkpointState(SubtaskCheckpointCoordinatorImpl.java:312)
	at org.apache.flink.streaming.runtime.tasks.StreamTask.lambda$performCheckpoint$8(StreamTask.java:1092)
	at org.apache.flink.streaming.runtime.tasks.StreamTaskActionExecutor$SynchronizedStreamTaskActionExecutor.runThrowing(StreamTaskActionExecutor.java:93)
	at org.apache.flink.streaming.runtime.tasks.StreamTask.performCheckpoint(StreamTask.java:1076)
	at org.apache.flink.streaming.runtime.tasks.StreamTask.triggerCheckpointAsyncInMailbox(StreamTask.java:994)
	... 13 more
Caused by: org.apache.flink.streaming.connectors.kafka.FlinkKafkaException: Failed to send data to Kafka: Expiring 1 record(s) for topic_sanitation_vehicle_data-0:120000 ms has passed since batch creation
	at org.apache.flink.streaming.connectors.kafka.FlinkKafkaProducer.checkErroneous(FlinkKafkaProducer.java:1392)
	at org.apache.flink.streaming.connectors.kafka.FlinkKafkaProducer.flush(FlinkKafkaProducer.java:1095)
	at org.apache.flink.streaming.connectors.kafka.FlinkKafkaProducer.preCommit(FlinkKafkaProducer.java:1002)
	at org.apache.flink.streaming.connectors.kafka.FlinkKafkaProducer.preCommit(FlinkKafkaProducer.java:99)
	at org.apache.flink.streaming.api.functions.sink.TwoPhaseCommitSinkFunction.snapshotState(TwoPhaseCommitSinkFunction.java:320)
	at org.apache.flink.streaming.connectors.kafka.FlinkKafkaProducer.snapshotState(FlinkKafkaProducer.java:1100)
	at org.apache.flink.streaming.util.functions.StreamingFunctionUtils.trySnapshotFunctionState(StreamingFunctionUtils.java:118)
	at org.apache.flink.streaming.util.functions.StreamingFunctionUtils.snapshotFunctionState(StreamingFunctionUtils.java:99)
	at org.apache.flink.streaming.api.operators.AbstractUdfStreamOperator.snapshotState(AbstractUdfStreamOperator.java:89)
	at org.apache.flink.streaming.api.operators.StreamOperatorStateHandler.snapshotState(StreamOperatorStateHandler.java:218)
	... 23 more
Topic xxx not present in metadata after 6000 ms

在这里插入图片描述
在这里插入图片描述

Flink Kafka Offset 管理是指在使用 Flink 消费 Kafka 数据流时,如何管理消费的偏移量(offset),以便在出现故障或重新启动应用程序时能够准确地从上次的偏移量继续消费数据。 Flink 支持两种方式来管理 Kafka 偏移量:手动管理和自动管理。 1. 手动管理: 在手动管理模式下,应用程序需要自行跟踪和存储偏移量,并在恢复或重启时将偏移量手动设置为上次记录的偏移量。常见的做法是将偏移量保存在外部存储中,例如 Apache ZooKeeper 或存储系统等。这种方式需要编写一些代码来实现偏移量的跟踪和管理。手动管理模式有较高的灵活性,但需要开发者自行处理更多的细节。 2. 自动管理: 自动管理模式下,Flink 提供了与 Kafka 进行整合的功能,可以自动跟踪和管理每个 Kafka 分区的偏移量。FlinkKafka Connector 提供了可靠的偏移量管理功能,能够自动订阅 Kafka 的特定主题和分区,并在每次消费数据时自动跟踪和记录偏移量。如果应用程序在故障之后重新启动,Flink 会读取最近的保存的偏移量,并从偏移量所在位置继续消费数据。自动管理模式相对简单方便,无需编写额外的代码。 两种模式各有优缺点,选择适合自己应用场景的方式进行偏移量管理。 总之,Flink Kafka Offset 管理是确保在 Flink 应用程序消费 Kafka 数据流时,能够准确地从上次消费的偏移量继续消费数据的一种机制,开发者可以选择手动管理或自动管理模式来实现偏移量的跟踪和管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值