flink应用集群和作业集群有什么区别

6jygbczu  于 2023-03-06  发布在  Apache
关注(0)|答案(1)|浏览(233)

我正在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.区分这两种集群模式有什么好处?

iklwldmw

iklwldmw1#

请注意,在1.15中已弃用逐作业模式。
Flink 应用:Flink应用程序是一个Java应用程序,它通过main()方法(或其他方法)提交一个或多个Flink作业。提交作业通常通过在执行环境中调用execute()来完成。
如果在同一个主类中有两个不同的作业,则Flink应用程序可以包含多个作业。一个示例是当您想要从具有不同环境配置的两个不同源读取时。
一个运行两个作业的Flink应用程序的一个非常基本的示例:

public class FlinkApp{ //application
  public static void main(String arg[]){
    StreamExecutionEnvironment env1 = StreamExecutionEnvironment.getExecutionEnvironment();
    env1.setParallelism(3);
    //add source and destination to env1
    env1.execute(); //Job 1

    StreamExecutionEnvironment env2 = StreamExecutionEnvironment.getExecutionEnvironment();
    env2.setParallelism(6);
    //add source and destination to env2
    env2.execute(); //Job 2
  }
}

另请参见此讨论-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版本建议在生产系统中使用应用程序模式。

相关问题