Apache flink TM recovery如何处理过去广播的数据

Apache flink TM recovery如何处理过去广播的数据,apache-flink,flink-streaming,flink-cep,flink-sql,flink-batch,Apache Flink,Flink Streaming,Flink Cep,Flink Sql,Flink Batch,在TaskManager(TM)的HA上下文中,当TM发生故障时,JobManager(JM)将从最新的检查点恢复一个新的 假设我们有3个TMs(tm1、tm2和tm3) 在每个人的检查点(cp)位于cp1的给定时间t。其中所有TMs广播数据 现在tm2下降,JM将tm2'和cp1检查点作为HA的一部分。到t+x时,一个新的TM被提出,而其他TM则进展到cp2 作为cp2的一部分,由tm1和tm3广播的数据如何在tm2'上重播?检查点的内容由检查点屏障决定。一个给定的检查点正好包括整个集群中的所

在TaskManager(TM)的HA上下文中,当TM发生故障时,JobManager(JM)将从最新的检查点恢复一个新的

假设我们有3个TMs(
tm1、tm2和tm3
) 在每个人的检查点(cp)位于
cp1
的给定时间
t
。其中所有TMs广播数据

现在
tm2
下降,JM将
tm2'
cp1
检查点作为HA的一部分。到
t+x
时,一个新的TM被提出,而其他TM则进展到
cp2


作为
cp2
的一部分,由
tm1
tm3
广播的数据如何在
tm2'
上重播?

检查点的内容由检查点屏障决定。一个给定的检查点正好包括整个集群中的所有人的效果,所有人都已处理到相应的屏障,并且在该屏障之后没有任何事件

在恢复过程中,整个集群将重置为最近检查点的内容,然后从该一致的起点恢复处理

广播数据或多或少像其他任何东西一样被检查点,只是每个实例都存储自己的广播数据副本——期望这些副本是相同的。在恢复过程中,广播源被重绕到检查点中记录的点,并且广播状态也从检查点恢复。任何新实例(由于集群的扩展)都将获得广播状态的副本(通过读取其他实例之一的状态获取)


可能是在发生故障时,某些计算机已完成一个新的检查点,但检查点不会用于恢复,除非每个TM已完成该检查点,并且作业管理器已完成该检查点。

可能是在发生故障时,一些机器已经完成了一个新的检查点,在一次处理的情况下,事情是如何工作的;至少一次比较简单。对于stackoverflow问题/答案来说,对Flink的检查点进行透彻的解释有点过分。如果您想了解更多,可以从这里开始。我添加了一段解释在检查点和恢复期间广播状态是如何处理的。谢谢@David,我有一个简单的是或否问题。在未对齐的检查点中可以实现一次处理?是的。Flink 1.11中引入的新的未对齐检查点只是一种替代方法,它还提供了精确的一次语义。