任务管理器失败后的 Flink-RocksDB 行为
Flink-RocksDB behaviour after task manager failure
我正在试验我的新 Flink 集群(3 个不同的机器 -> 1 个作业管理器,2-> 任务管理器)使用 RocksDB 作为状态后端但是我得到的检查点行为有点令人困惑。
更具体地说,我设计了一个简单的WordCount示例,我的数据源是netcat。当我提交作业时,作业管理器将其分配给随机任务管理器(也没有复制)。我提供了一些词,然后我终止了当前 运行 任务管理器。过了一会儿,作业在另一个任务管理器中重新启动,我可以提供一些新词。令人困惑的是,即使我杀死了第一个任务管理器,它的状态也会保留。
据我了解,RocksDB 在 运行 任务管理器的本地目录中维护其状态,所以我期望的是当第一个任务管理器被杀死时丢失整个状态并开始计算来自开始。所以 Flink 似乎以某种方式在内存中维护其状态(?)或通过 JobManager 广播它?
我是不是漏掉了什么?
RocksDB 状态后端确实在每个任务管理器的本地磁盘上保持其工作状态,而检查点通常存储在分布式文件系统中。
如果您启用了检查点,则备用任务管理器能够从最新的检查点恢复状态并继续处理。
我正在试验我的新 Flink 集群(3 个不同的机器 -> 1 个作业管理器,2-> 任务管理器)使用 RocksDB 作为状态后端但是我得到的检查点行为有点令人困惑。
更具体地说,我设计了一个简单的WordCount示例,我的数据源是netcat。当我提交作业时,作业管理器将其分配给随机任务管理器(也没有复制)。我提供了一些词,然后我终止了当前 运行 任务管理器。过了一会儿,作业在另一个任务管理器中重新启动,我可以提供一些新词。令人困惑的是,即使我杀死了第一个任务管理器,它的状态也会保留。
据我了解,RocksDB 在 运行 任务管理器的本地目录中维护其状态,所以我期望的是当第一个任务管理器被杀死时丢失整个状态并开始计算来自开始。所以 Flink 似乎以某种方式在内存中维护其状态(?)或通过 JobManager 广播它?
我是不是漏掉了什么?
RocksDB 状态后端确实在每个任务管理器的本地磁盘上保持其工作状态,而检查点通常存储在分布式文件系统中。
如果您启用了检查点,则备用任务管理器能够从最新的检查点恢复状态并继续处理。