Flink 集群部署模式

这篇具有很好参考价值的文章主要介绍了Flink 集群部署模式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

Flink支持多种集群部署模式,以满足不同场景和需求。以下是Flink的主要集群部署模式:

  1. 会话模式(Session Mode)

    • 在会话模式下,用户首先启动一个长期运行的Flink集群,然后在这个会话中提交多个作业。
    • 集群资源在启动时就已经确定,提交的作业会竞争集群中的资源,直到作业运行完毕释放资源。
    • 会话模式适合执行大量规模小、执行时间短的作业。
    • 由于集群资源是共享的,因此可能存在资源争用的问题。
  2. 单作业模式(Per-Job Mode)

    • 在单作业模式下,每个作业都会启动一个独立的Flink集群,作业完成后集群也会关闭。
    • 这种模式为每个作业提供了资源隔离,避免了资源争用的问题。
    • 由于每个作业都需要启动和关闭集群,因此在处理大量作业时可能会产生额外的开销。
    • 单作业模式通常与第三方资源调度器(如YARN、Kubernetes等)结合使用,以便更有效地管理集群资源。
  3. 应用模式(Application Mode)

    • 应用模式与单作业模式类似,也是为每个作业启动一个独立的Flink集群。
    • 与单作业模式不同的是,在应用模式下,作业的main方法直接在JobManager上执行,而不是在客户端执行。
    • 这种模式简化了作业的提交过程,并减少了客户端与JobManager之间的通信开销。
    • 应用模式同样需要依赖第三方资源调度器来管理集群资源。

在选择Flink的集群部署模式时,需要根据实际的应用场景和需求进行权衡。例如,对于需要频繁提交大量小作业的场景,会话模式可能是一个合适的选择;而对于需要严格资源隔离和稳定性保障的场景,单作业模式或应用模式可能更为合适。同时,还需要考虑与现有资源调度器的集成和兼容性。


一、会话模式(Session Mode)

Flink 集群部署模式,# Flink,flink,大数据
在 Apache Flink 的会话模式(Session mode)中,假设已经存在一个预先配置好的运行中的集群,该集群提供必要的资源来执行提交的应用程序。在这种模式下,多个应用程序共享同一个集群的资源,这意味着它们会竞争 CPU、内存和其他资源。

以下是会话模式的优势和劣势,供您在决策时考虑:

优势:

  1. 资源高效性: 对于每个提交的作业都启动一个完整的集群会消耗大量资源。在会话模式下,您避免了这种开销,因为可以重复使用已运行集群的资源。

  2. 简化管理: 有一个长期运行的集群意味着您不需要为每个作业频繁地启动和关闭集群。这简化了集群管理,减少了操作复杂性。

劣势:

  1. 资源竞争: 由于所有作业共享同一个集群的资源,它们会争夺 CPU、内存和网络带宽。这可能导致性能下降,如果某个作业消耗了不成比例的资源。

  2. 故障传播: 如果一个作业行为异常或导致 TaskManager 失败,它可能会影响在同一 TaskManager 上运行的其他作业。这可能导致故障级联和大规模的恢复过程,这个过程可能非常消耗资源且耗时。

  3. JobManager 负载增加: JobManager 负责管理和协调集群中运行的所有作业。多个作业同时运行时,JobManager 会面临增加的负载,这可能影响其性能和可伸缩性。

  4. 隔离性有限: 会话模式提供的作业之间的隔离性有限。一个作业的问题可能会潜在地影响在相同集群中运行的其他作业。

在考虑会话模式时,重要的是要评估您的具体用例和需求。如果您有一组稳定的作业,它们不需要严格的资源隔离,并且您希望最大化资源利用率,那么会话模式可能是一个不错的选择。然而,如果您需要更好的隔离性、容错性或对资源分配的更精细控制,您可能想考虑其他部署模式,如单作业模式(Per-Job)或应用模式(Application mode)。

此外,值得注意的是,Flink 提供了配置选项来减轻会话模式的一些劣势。例如,您可以配置资源配额或根据作业的重要性设置优先级,以确保公平的资源分配。您还可以使用外部监控和告警工具来快速检测和响应故障。

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

Flink 集群部署模式,# Flink,flink,大数据
为了提供更好的资源隔离保证,单作业模式(Per-Job mode)使用可用的资源提供者框架(如YARN、Kubernetes)为每个提交的作业启动一个集群。这个集群仅对该作业可用。作业完成后,集群会被销毁,任何剩余的资源(如文件等)也会被清理。这提供了更好的资源隔离,因为行为异常的作业只能导致其自己的 TaskManager 崩溃。此外,由于每个作业都有一个 JobManager,因此它将记录工作的负载分散到了多个 JobManager 上。出于这些原因,单作业资源分配模型是许多生产环境首选的模式。

三、应用模式(Application Mode)

Flink 集群部署模式,# Flink,flink,大数据
应用模式(Application Mode)#

在所有的其他模式中,应用程序的 main() 方法都是在客户端执行的。这个过程包括在本地下载应用程序的依赖项,执行 main() 来提取 Flink 运行时可以理解的应用程序表示(即 JobGraph),并将依赖项和 JobGraph 发送到集群。这使得客户端成为了一个大量消耗资源的实体,因为它可能需要大量的网络带宽来下载依赖项和向集群发送二进制文件,以及 CPU 周期来执行 main()。当客户端在多用户之间共享时,这个问题可能会更加明显。

基于这一观察,应用模式为每个提交的应用程序创建一个集群,但这次,应用程序的 main() 方法是在 JobManager 上执行的。为每个应用程序创建一个集群可以看作是创建一个会话集群,该集群仅由特定应用程序的作业共享,并在应用程序完成后销毁。通过这种架构,应用模式提供了与单作业模式相同的资源隔离和负载均衡保证,但粒度是整个应用程序。在 JobManager 上执行 main() 方法不仅节省了所需的 CPU 周期,还节省了本地下载依赖项所需的带宽。此外,由于每个应用程序都有一个 JobManager,它还允许在集群中更均衡地分配下载应用程序依赖项的网络负载。

在应用模式中,main() 是在集群上执行的,而不是在客户端上,如其他模式那样。这可能对您的代码产生影响,例如,您使用 registerCachedFile() 在环境中注册的任何路径都必须可由您的应用程序的 JobManager 访问。

与单作业模式相比,应用模式允许提交由多个作业组成的应用程序。作业的执行顺序不受部署模式的影响,而是由用来启动作业的调用方式决定。使用阻塞式的 execute() 方法会建立一个顺序,并导致“下一个”作业的执行被推迟,直到“当前”作业完成。而使用非阻塞式的 executeAsync() 方法会导致“下一个”作业在“当前”作业完成之前就开始执行。

应用模式支持多 execute() 应用程序,但在这种情况下不支持高可用性(High-Availability)。应用模式中的高可用性仅支持单 execute() 应用程序。

此外,在应用模式中,如果多个正在运行的作业中的任何一个(例如,使用 executeAsync() 提交的)被取消,所有作业都将停止,并且 JobManager 将关闭。正常的作业完成(由源关闭引起)是被支持的。文章来源地址https://www.toymoban.com/news/detail-841424.html

到了这里,关于Flink 集群部署模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大数据-玩转数据-FLINK(Yarn模式)的安装与部署

    默认情况下,Flink 只有一个JobManager,这将导致单点故障,使用JobManager HA ,集群可以从单点故障中恢复,从而避免单点故障,我们可以在Standalone 或 Flink on Yarn 集群下配置Flink集群HA(高可用性)。而Flink on Yarn的高可用性其实主要是利用Yarn的任务恢复机制实现的。生产环境推

    2024年02月13日
    浏览(37)
  • 【Flink系列】部署篇(一):Flink集群部署

    主要回答以下问题: Flink集群是由哪些组件组成的?它们彼此之间如何协调工作的? 在Flink中job, task, slots,parallelism是什么意思?集群中的资源是如何调度和分配的? 如何搭建一个Flink集群?如何配置高可用服务?如何使用外部文件系统? Flink的核心组件包含客户端,jobmanag

    2023年04月09日
    浏览(48)
  • 【Flink】1.Flink集群部署

    Flink可以部署于各种各样的集群之中,比如Flink自己的standalone集群(不依赖于其他资源调度框架,是Flink自带的),flink on yarn集群等。而不管是standalone还是flink on yarn都属于集群,还有一种特殊的单机flink——local。 Flink真正用来做执行操作的叫做worker,进程在不同的环境模式

    2024年02月13日
    浏览(38)
  • Flink集群运行模式--Standalone运行模式

    ⚠申明: 未经许可,禁止以任何形式转载,若要引用,请标注链接地址。 全文共计2391字,阅读大概需要3分钟 🌈更多学习内容, 欢迎👏关注👀【文末】我的个人微信公众号:不懂开发的程序猿 个人网站:https://jerry-jy.co/ 掌握Standalone集群搭建的过程。 掌握Flink的三种部署

    2024年02月15日
    浏览(47)
  • Flink 本地单机/Standalone集群/YARN模式集群搭建

    本文简述 Flink 在 Linux 中安装步骤,和示例程序的运行。需要安装 JDK1.8 及以上版本。 下载地址:下载 Flink 的二进制包 点进去后,选择如下链接: 解压 flink-1.10.1-bin-scala_2.12.tgz ,我这里解压到 soft 目录 解压后进入 Flink 的 bin 目录执行如下脚本即可 进入 Flink 页面看看,如果

    2024年02月05日
    浏览(44)
  • Flink三种模式介绍&集群的搭建

    目录 Flink是什么  Flink部署模式 会话模式(Session Mode ) 单作业模式(Per-Job Mode) 应用模式(Application Mode) Flink集群搭建 Standalone运行模式  会话模式 单作业模式部署 应用模式部署 YARN运行模式  会话模式部署 单作业模式部署 应用模式部署 Flink是“数据流上的有状态计算”

    2024年02月09日
    浏览(35)
  • Docker 部署 Flink 集群环境

    Flink 部署笔记: Ubuntu 环境下部署 Flink 集群环境 Docker 部署 Flink 集群环境 kubernetes(K8S) 部署 Flink 集群环境 下面的1、2两个方法选其一即可。 创建网络 配置属性 在命令行界面直接输入。 启动jobmanager容器 启动taskmanager容器 可启动一个或多个。 准备工作 创建flink-docker文件夹,

    2024年02月02日
    浏览(39)
  • Flink-1.17集群部署

    1.1、修改flink-conf.yaml 1.1.1、flink-17 1.1.2、flink-1-13 1.2、masters 1.3、workers 2.1、mysql-to-kafka-starrocks 2.2、提交参数

    2024年02月03日
    浏览(45)
  • Flink的Standalone集群部署

    在上篇进行单机的Standalone部署-Flink的Standalone部署实战,本篇介绍Flink的Standalone集群部署。 Flink集群为 主从架构 ,主是JobManager,从为TaskManager,支持一主多从。 本次搭建环境为3台机器,信息如下表所示。 IP 服务 描述 192.168. 184.37 JobManager、TaskManager 192.168. 184.30 TaskManager 192

    2024年02月11日
    浏览(38)
  • 【Flink系列】部署篇(三):Native k8s部署高可用Flink集群实战

    上一篇博文介绍了如何独立部署一个高可用的Flink集群,本篇介绍如何用Native k8s去部署高可用的Flink 集群。本篇介绍的集群构建在AWS上,和构建在自己的服务器相比,主要区别在文件系统的选择和使用上。我选用的S3服务。 EC2操作系统:centos7 本机操作系统:Mac flink version: 1.

    2024年02月02日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包