我正在www.example.com和www.example.com上阅读 https://nightlies.apache.org/flink/flink-docs-release-1.12/concepts/glossary.html#flink-application-cluster and https://nightlies.apache.org/flink/flink-docs-release-1.12/concepts/glossary.html#flink-job-cluster
Flink应用程序群集
Flink应用程序群集是一个专用的Flink群集,它只执行来自一个Flink应用程序的Flink作业。Flink群集的生存期与Flink应用程序的生存期绑定在一起。
Flink 作业簇:
Flink 作业集群是只执行单个 Flink 作业的专用 Flink 集群。 Flink 集群的生存期与 Flink 作业的生存期绑定。
我经常向YARN提交flink代码jar,每个flink代码jar将启动一个长时间运行的YARN应用程序,该应用程序具有不同的YARN应用程序ID。
我有两个问题:
1.我不知道我的应用程序在哪种模式下运行,flink application cluster
还是flink job cluster
?
1.区分这两种集群模式有什么好处?
1条答案
按热度按时间iklwldmw1#
请注意,在1.15中已弃用逐作业模式。
Flink 应用:Flink应用程序是一个Java应用程序,它通过main()方法(或其他方法)提交一个或多个Flink作业。提交作业通常通过在执行环境中调用execute()来完成。
如果在同一个主类中有两个不同的作业,则Flink应用程序可以包含多个作业。一个示例是当您想要从具有不同环境配置的两个不同源读取时。
一个运行两个作业的Flink应用程序的一个非常基本的示例:
另请参见此讨论-Multiple jobs or multiple pipelines in one job in Flink
我不知道我的应用程序在哪种模式下运行,flink应用程序集群还是flink作业集群?
这取决于您运行应用程序时选择的目标环境选项。如果上述应用程序(Jar文件)在部署目标为
--target yarn-per-job
的YARN集群上运行,则应用程序的主方法将在启动应用程序的客户端上运行,作业及其依赖项将发送到YARN JobManager,每个作业将在YARN中自己的专用集群上运行。选件
--target yarn-session
在本地运行客户端,将作业及其依赖项发送到YARN JobManager和同一集群上的两个作业。选项
--target yarn-application
在YARN群集中运行main方法和作业。此选项需要作业的依赖项在群集的所有节点上可用。区分这两种集群模式有什么好处?
应用程序模式不允许作业之间的分离,因为它们都在同一群集上运行。运行缓慢的作业可能会影响其他作业。它允许更快的部署和恢复,因为依赖项在节点上已经可用,并且不需要在每次重新启动作业时发送它。
每作业模式运行作业在其专用的YARN集群。即使一个作业变慢或失败,它不会影响其他作业。
选择哪种模式会影响你部署、设计Flink应用程序/作业和YARN集群设置的方式。Flink 1.16版本建议在生产系统中使用应用程序模式。