Apache flink 崩溃时Flink任务管理器中的状态如何?

Apache flink 崩溃时Flink任务管理器中的状态如何?,apache-flink,flink-streaming,Apache Flink,Flink Streaming,我想知道当Flink任务管理器崩溃时,存储在Flink任务管理器中的状态会发生什么变化。假设状态存储为rocksdb,那么这些数据是否会传输到其他正在运行的任务管理器,以便完整的状态数据准备好进行数据处理?Flink(尚未)支持动态重新缩放状态,因此必须恢复失败的任务管理器,并从检查点重新启动作业 具体涉及的内容取决于集群的配置方式,以及作业失败是因为异常还是因为运行任务管理器的计算机/容器失败 如果您使用的是RocksDB,并且启用了本地恢复,那么如果作业因异常而死亡,任务管理器都将能够或多或

我想知道当Flink任务管理器崩溃时,存储在Flink任务管理器中的状态会发生什么变化。假设状态存储为rocksdb,那么这些数据是否会传输到其他正在运行的任务管理器,以便完整的状态数据准备好进行数据处理?

Flink(尚未)支持动态重新缩放状态,因此必须恢复失败的任务管理器,并从检查点重新启动作业

具体涉及的内容取决于集群的配置方式,以及作业失败是因为异常还是因为运行任务管理器的计算机/容器失败

如果您使用的是RocksDB,并且启用了本地恢复,那么如果作业因异常而死亡,任务管理器都将能够或多或少地从其状态的本地副本重新启动作业。另一方面,如果必须启动新的任务管理器,那么一旦它运行,它将从最新的检查点(从使用的任何分布式文件系统)获取它需要的内容,然后作业将继续

如果没有本地恢复,每个任务管理器都必须从DFS获取检查点的相关部分


在某些情况下,可以做一些比完全恢复成本更低的事情。有关详细信息,请参阅。

谢谢您的解释@David。在TM机器崩溃的情况下,我想知道另一个TM是否会接管崩溃的TM的状态以确保数据完成(例如,状态按键,不同的键状态将存储在不同的TM中),或者必须恢复崩溃的TM才能继续?例如,5条记录,rec1:KEYA;记录2:KEYB;记录3:KEYA;建议4:KEYC;记录5:KEYB,rec1:KEYA、rec3:KEYA的TM1存储状态\n rec2:KEYB、rec5:KEYB的TM2存储状态\n rec4:KEYC的TM3存储状态\n如果TM2崩溃,rec2和rec5将分配给其他TM?或者那些记录只有在TM2恢复时才能恢复?此外,如果TM机器崩溃,检查点之前的数据将丢失?谢谢。崩溃的TM必须恢复,自上次检查点以来的状态更新将丢失。当然,在工作重新开始和恢复时,应该重新创建丢失的状态。谢谢@David。一个附带的问题,如果其中一个TM崩溃,整个集群需要重新启动,以使所有状态正确地重新分布,这样说对吗?请参阅