Flink 是否保证所有情况下的任务容错?

Rez*_*'ei 2 apache-flink

我正在寻找一个容错的流处理引擎。出于这个原因,我用一个简单的工作来测试 Flink:从文本套接字读取单词的 SocketTextStreamWordCount 示例!我在一个有 3 个任务管理器的独立集群上运行它,我找到了负责从套接字读取的任务管理器!我杀死了 TaskManger (kill -9) 并等待查看结果:大约 30 秒后,JobManger 删除了死的 TaskManger!并将工作分配为失败!

看来容错保证不是一般的东西,取决于Job!我对吗?有没有可以解释的参考资料?

Dav*_*son 5

Flink 中的容错不仅仅取决于在另一个任务管理器失败时重新启动任务。您还需要启用检查点,并且对于端到端的恰好一次保证,您需要拥有支持重放和幂等或事务的接收器的源。

但是,在您的情况下,首先开始的地方可能是配置重新启动策略 - 请参阅此处的文档。

Flink 文档的其他几个部分与此主题相关。一个很好的起点是流式容错部分。同样相关的还有关于检查点、状态后端、容错保证和高可用性的部分。

data Artisans 网站上有一篇博客文章,它在通过检查点展示故障恢复方面做得很好。还提供了随附的youtube 视频和github 存储库。