当前位置: 首页 > 知识库问答 >
问题:

Flink精确一次-在接收器处设置检查点和障碍确认

张银龙
2023-03-14

我有一个Flink工作,负责将数据写入MongoDB的接收器。接收器是RichSinkFunction的实现。

已启用外部化检查点。间隔为5000 mills,方案为一次。

  • Flink版本1.3,
  • kafka(源话题)0.9.0

我无法升级到Flink 1.4的TwoPhaseContSink

我没有什么疑问

  1. 在调用函数开始时或调用完成时,接收器在哪个时间点确认检查点屏障?表示它在确认障碍之前等待持久(保存在MongoDB中)响应

共有1个答案

邢焱
2023-03-14

首先,如果源和接收器支持,Flink只能保证端到端的精确一次一致性。如果您使用的是Flink的Kafka消费者,Flink可以保证应用程序的内部状态是精确一次一致的。要实现完全的端到端精确一次一致性,接收器也需要适当地支持这一点。您应该检查MongoDB接收器的实现是否正常工作。

检查点屏障通过数据传输通道发送常规消息,即检查点屏障将流分隔为进入检查点和1的记录。接收器操作符将处理两个调用之间的屏障,并触发状态后端执行检查点。然后由状态后端决定是否以及如何异步执行检查点。一旦触发检查点的调用返回,接收器就可以继续处理。一旦收到状态后端的通知,接收器操作员将向JobManager报告其已完成状态检查点。当所有操作员成功报告他们完成了检查点时,整个检查点完成。

这篇博客文章更详细地讨论了端到端的一次处理以及对接收器操作符的要求。

 类似资料:
  • 我已经设置了一个Flink 1.2独立集群,其中包含2个JobManager和3个TaskManager,我正在使用JMeter通过生成Kafka消息/事件对其进行负载测试,然后处理这些消息/事件。处理作业在TaskManager上运行,通常需要大约15K个事件/秒。 作业已设置EXACTLY_ONCE检查点,并将状态和检查点持久化到Amazon S3。如果我关闭运行作业的TaskManager需

  • Apache Flink通过从检查点恢复作业,确保故障和恢复时只进行一次处理,检查点是分布式数据流和操作员状态的一致快照(分布式快照的Chandy Lamport算法)。这保证了故障切换时只需一次。 在正常集群操作的情况下,Flink如何保证只进行一次处理,例如给定一个从外部源读取的Flink源(例如Kafka),Flink如何保证从源读取一次事件?事件源和Flink源之间是否有任何类型的应用程序

  • 一、 我正试图用Kafka信源和信宿测试Flink一次语义: 运行flink应用程序,只需将消息从一个主题传输到另一个主题,并行度=1,检查点间隔20秒 每2秒使用Python脚本生成具有递增整数的消息。 使用read_committed隔离级别的控制台使用者读取输出主题。 手动杀死TaskManager 我希望在输出主题中看到单调递增的整数,而不考虑TaskManager的终止和恢复。 但实际上

  • 无障碍设计 无障碍设计是指产品, 设备, 服务, 或者环境是为残疾人设计的. 无障碍设计的概念意味着与一个人的辅助技术(例如, 电脑屏幕阅读器)相兼容, 确保直接访问(即独立)和"间接访问". 无障碍设计可以理解为 "能够访问", 并对一个系统或实体是有利的, 其侧重于使身体残障, 或有特殊需要, 或要依赖辅助技术的人群能够访问 Web. 然后, 研究和开发无障碍设计对每个人都带来了好处. 无障碍

  • 我正在寻找Python的第n个根函数/算法,但在发布之前:没有整数根,见鬼 我从哪里至少可以获得一个指南,指导如何编程生成精确的/ 对于(第一个参数是数字,第二个参数是根深度(或其他内容))不返回或的函数。 编辑:所以,你给了我这个解决方案:,当我问这个问题时,我就知道了,但它不适用于,例如,。你不能用有理数来表示,因此给出了不正确的结果

  • 1)以上假设是否正确。2)当发生故障时,滚动窗口有状态是否有意义,我们从最后一个kafka分区提交的偏移量开始。3)当滚动窗口有状态时,这个状态什么时候可以被flink使用。4)为什么检查点和保存点的状态大小不同。5)当发生故障时,flink总是从sorce运算符开始。对吗?