我正在寻找一个容错的流处理引擎。出于这个原因,我用一个简单的Job测试Flink:SocketTextStreamWordCount示例从文本套接字中读取单词!我在一个带有3个任务管理器的独立集群上运行它,我找到了负责的TaskManager来读取socket!我杀死了TaskManger(杀死-9),并等待看到结果:约30秒后,JobManger删除了死亡的TaskManger!并将作业分配为失败!
似乎容错保证不是一般的事情,取决于工作!我对吗?有没有可以解释它的参考?
答案 0 :(得分:4)
Flink中的容错程度不仅仅取决于其中一个任务失败时在另一个任务管理器上重新启动任务。您还需要启用检查点,并且对于端到端的确切一次保证,您需要具有支持重放和接收的源,这些源是幂等的或事务性的。
但是,在您的情况下,首先要做的是配置重启策略 - 请参阅documentation here。
Flink文档的其他几个部分与此主题相关。一个好的起点是Streaming Fault Tolerance部分。与Checkpointing,State Backends,Fault Tolerance Guarantees和High Availability相关的部分也相关。
有一个blog post on the data Artisans website可以很好地通过检查点显示失败恢复。随附的youtube video和github repo也可用。