Client 将作业提交给 JobManager ,JobManager 将作业分发给很多个 TaskManager 开始干活。
部署模式有三种(会话模式_session,单作业模式_per_job,应用模式_application)
主要区别是生命周期及资源的分配方式,以及应用的 main 方法到底在哪里执行,是客户端还是JobManager。
会话模式
需要先启动一个集群,保持一个会话。
但启动集群时,资源是共享的,会导致资源竞争。
单作业模式
为每个提交的作业启动一个集群,作业完成后,集群关闭,资源被释放。
【生产环境运行更加稳定,实际应用时首选。】
但 Flink 不能直接这样运行,需要借助资源管理框架运行(如 Yarn,K8S )。
应用模式
前两种都是客户端执行应用代码,然后提交给 Job Manager ,客户端消耗很多带宽,可能会加重客户端所在节点的资源消耗。
应用模式为每个应用单独提交一个 Job Mananger ,相当于每个Flink集群运行一个应用。
应用模式可以有 Standalone模式、YARN模式、K8S模式等。
运行模式指的是由谁来管理资源。
Standalone模式
独立运行,不依赖外部资源管理平台,不能自动扩展。
YARN
客户端将 Flink 应用提交给 YARN 的 Resource Manager ,Resource Manager 向 YARN 的各个Node结点申请容器,在容器上运行部署(根据 slot 数量动态分配 TaskManager 资源),从而启动集群。
要求 Hadoop环境(HDFS、YARN、MapReduce)
会话模式
执行脚本命令向 YARN 集群申请资源,开启