Flink Application Cluster与Job Cluster的区别及YARN部署模式疑问
关于Flink 1.12 YARN集群模式的疑问解答
1. 如何判断当前运行的集群模式?
结合提交命令和Jar包内作业情况就能明确:
- 若使用
flink run-application -t yarn-application提交Jar包:
这是Flink Application Cluster模式。Jar包的main方法会在YARN的ApplicationMaster(AM)中执行,不管Jar里包含1个还是多个作业,所有作业都运行在同一个YARN应用(对应你看到的独立YARN应用ID)里,集群生命周期和整个应用绑定,应用不停止,集群就持续运行。 - 若使用
flink run -t yarn-cluster提交Jar包:
这是Flink Job Cluster模式。Jar包的main方法在本地客户端执行,生成单个JobGraph后提交到YARN,每个作业对应一个独立的YARN应用,集群生命周期和这个单个作业绑定,作业结束集群就终止。
额外判断点:如果Jar包启动了多个作业,但这些作业共享同一个YARN应用ID,那必然是Application Cluster模式;若每个作业对应不同YARN应用ID,则是Job Cluster模式。
2. 区分两种集群模式的意义?
核心差异体现在资源、运维、效率等维度:
- 资源利用率:
Application Cluster模式下,多个作业可共享集群的TaskManager、内存等资源,适合一个应用包含多个关联作业的场景,能减少资源重复占用;Job Cluster模式是单个作业独占集群资源,隔离性更好,但作业数量多易造成资源碎片化。 - 运维复杂度:
Application Cluster模式只需维护一个YARN应用,运维成本更低;Job Cluster模式每个作业对应一个YARN应用,作业多的话要管理大量应用ID,运维成本更高。 - 启动效率:
Application Cluster模式仅需启动一次集群,后续作业可直接在集群内提交,启动开销小;Job Cluster模式每个作业都要重新启动集群,启动耗时更长、开销更大。 - 配置灵活性:
Job Cluster模式可针对单个作业调整资源配置(比如不同作业用不同数量的TaskManager),灵活性更高;Application Cluster模式下所有作业共享同一套资源配置,调整空间更受限。
内容的提问来源于stack exchange,提问作者Tom
相关产品推荐
相关产品推荐

