美文网首页
Apache Flink——集群部署模式

Apache Flink——集群部署模式

作者: 小波同学 | 来源:发表于2022-06-16 23:52 被阅读0次

前言

在一些应用场景中,对于集群资源分配和占用的方式,可能会有特定的需求。Flink 为各种场景提供了不同的部署模式,主要有以下三种:

  • 会话模式(Session Mode)
  • 单作业模式(Per-Job Mode)
  • 应用模式(Application Mode)

它们的区别主要在于:集群的生命周期以及资源的分配方式;以及应用的 main 方法到底在哪里执行——客户端(Client)还是 JobManager。

一、会话模式(Session Mode)

启动一个集群,保持会话,在这个会话中,通过客户端提交作业,集群启动时所有资源就都已经确定,所以所有提交的作业会竞争集群中的资源。

这样的好处很明显,我们只需要一个集群,就像一个大箱子,所有的作业提交之后都塞进去;集群的生命周期是超越于作业之上的,作业结束了就释放资源,集群依然正常运行。

当然缺点也是显而易见的:因为资源是共享的,所以资源不够了,提交新的作业就会失败。另外,同一个 TaskManager 上可能运行了很多作业,如果其中一个发生故障导致 TaskManager 宕机,那么所有作业都会受到影响。

会话模式比较适合于单个规模小、执行时间短的大量作业。

先启动集群再提交作业,这种方式其实就是会话模式。

二、单作业模式(Per-Job Mode)

会话模式因为资源共享会导致很多问题,所以为了更好地隔离资源,我们可以考虑为每个提交的作业启动一个集群,这就是所谓的单作业(Per-Job)模式,

单作业模式也很好理解,就是严格的一对一,集群只为这个作业而生。同样由客户端运行应用程序,然后启动集群,作业被提交给 JobManager,进而分发给 TaskManager 执行。作业完成后,集群就会关闭,所有资源也会释放。这样一来,每个作业都有它自己的 JobManager管理,占用独享的资源,即使发生故障,它的 TaskManager 宕机也不会影响其他作业。

这些特性使得单作业模式在生产环境运行更加稳定,所以是实际应用的首选模式。需要注意的是,Flink 本身无法直接这样运行,所以单作业模式一般需要借助一些资源管理框架来启动集群,比如 YARN、Kubernetes。

三、应用模式(Application Mode)

前面提到的两种模式下,应用代码都是在客户端上执行,然后由客户端提交给 JobManager的。但是这种方式客户端需要占用大量网络带宽,去下载依赖和把二进制数据发送给JobManager;加上很多情况下我们提交作业用的是同一个客户端,就会加重客户端所在节点的资源消耗。

所以解决办法就是,我们不要客户端了,直接把应用提交到 JobManger 上运行。而这也就代表着,我们需要为每一个提交的应用单独启动一个 JobManager,也就是创建一个集群。这个 JobManager 只为执行这一个应用而存在,执行结束之后 JobManager 也就关闭了,这就是所谓的应用模式。

应用模式与单作业模式,都是提交作业之后才创建集群;单作业模式是通过客户端来提交的,客户端解析出的每一个作业对应一个集群;而应用模式下,是直接由 JobManager 执行应用程序的,并且即使应用包含了多个作业,也只创建一个集群。

总结一下,在会话模式下,集群的生命周期独立于集群上运行的任何作业的生命周期,并且提交的所有作业共享资源。而单作业模式为每个提交的作业创建一个集群,带来了更好的资源隔离,这时集群的生命周期与作业的生命周期绑定。最后,应用模式为每个应用程序创建一个会话集群,在 JobManager 上直接调用应用程序的 main()方法。

参考:
https://blog.csdn.net/weixin_45417821/article/details/124041083

相关文章

  • Apache Flink——集群部署模式

    前言 在一些应用场景中,对于集群资源分配和占用的方式,可能会有特定的需求。Flink 为各种场景提供了不同的部署模...

  • Apache Flink——集群部署模式案例

    前言 本文重点是Flink on Yarn模式的部署,但在写Yarn 模式部署之前,说一下 独立模式(Standa...

  • Flink 操作场景

    Apache Flink 可以使用多用方式在不同的环境中部署,相对于部署环境的多样性而言,Flink集群的基本构建...

  • Flink学习笔记(1):Word Count

    本文是学习Apache Flink的开始,记录了Flink Local模式的部署,并运行了Word Count例子...

  • Apache Flink——快速部署集群

    前言 需要提到 Flink 中的几个关键组件:客户端(Client)、作业管理器(JobManager)和任务管理...

  • flink大纲知识

    flink集群部署flink反压flink拓扑架构flink的内存管理

  • Flink 集群与部署

    部署一个 Flink 集群,首先需要根据自己的实际情况选择适合自己的部署模式和部署平台 1.1 部署模式主要根据以...

  • Flink集群部署模式

    根据集群的生命周期、资源隔离方式和应用程序的main()方法执行位置(client或者JobManager)可以将...

  • Flink 部署模式

    本文仅对Flink集群的部署模式作简单探讨,并未对如何部署(如环境变量,节点互信,hadoop集成配置)作说明,相...

  • Redis集群部署

    Redis集群部署 Redis集群有多种部署模式,包括主从模式、哨兵模式、集群模式 主从模式   主从模式可以是一...

网友评论

      本文标题:Apache Flink——集群部署模式

      本文链接:https://www.haomeiwen.com/subject/gcrcvrtx.html