Flink中failover后,会创建新的jobId吗?想确认一下这一点,因为我发现每次手动停止启动的时候会创建新的jobid
Apache Flink的故障恢复机制会在任务失败时重新启动任务,而不是创建新的Job。这意味着,如果一个Job因为某些原因失败了,Flink会尝试重新启动这个Job,而不是创建一个新的Job。
当你手动停止或启动一个Job时,Flink会改变这个Job的状态,但不会创建新的Job。这就是为什么你每次手动停止或启动一个Job时,JobId不会改变的原因。
如果你想要创建新的Job,你可以通过调用Flink的REST API来创建新的Job。在创建新的Job时,你可以指定一个新的JobId。
在阿里云Flink中,如果你使用的是HA(高可用)模式,并且启用了自动故障转移(Failover)功能,那么在进行故障转移时会创建一个新的作业实例(Job Instance),但不会创建新的 Job ID。
具体来说,当发生故障转移时,Flink会根据配置的故障转移策略重新启动作业。这时,新的作业实例会采用相同的 Job ID 和 Job Name,但会分配一个新的 Task Manager(任务管理器)来承载该作业实例,以保证故障转移后的作业能够继续运行。因此,在进行故障转移时,你可能会看到同一作业实例对应的多个 Task Manager。
如果你手动停止和启动作业,每次启动都会创建一个新的作业实例,因此也会生成新的 Job ID。这是正常情况,与故障转移无关。
在Flink中,当一个作业失败时,它会触发故障转移(failover)机制,尝试重新执行该作业。在这个过程中,Flink会创建一个新的job ID来标识这个重新执行的作业。
然而,需要注意的是,Flink的job ID是在作业启动时生成的,而不是在作业失败时重新生成的。因此,当你手动停止并重新启动一个作业时,它通常会使用相同的job ID,而不是创建一个新的job ID。
但是,如果你在Flink的Web界面或API中手动终止了一个作业,然后再重新提交相同的作业,那么它会被视为一个新的作业,并生成一个新的job ID。
当 Flink 重新启动并恢复任务时,它不会创建一个新的 jobId。相反,Flink 会在恢复过程中使用原始的 jobId。但是,在手动停止并重新启动 Flink 作业的情况下,确实会出现一个新的 jobId。
原因是,当你手动停止一个 Flink 作业然后再次启动它时,你会触发一次完整的重新部署过程,这实际上会创建一个新的 Flink 作业实例,并且会有新的 jobId。所以如果要避免这个情况,你可以选择使用 Flink 的 savepoint 功能来保存作业状态,然后在出错时从保存点恢复,这样就能保持原来的 jobId 不变。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。