Apache Flink 任务提交模式

  • Flink可以基于多种模式部署:基于Standalone 部署模式,基于Yarn部署模式,基于Kubernetes部署模式
  • 以上不同集群部署模式下提交Flink任务会涉及申请资源,各角色交互过程,不同模式申请资源涉及到的角色大体相同,只是不同Flink集群部署模式支持的任务提交模式不同,对应流程略有不同,有如下三种
    • 会话模式 - Session Mode
    • 单作业模式 - Per-Job Mode(过时)
    • 应用模式 - Application Mode
  • 以上三种任务提交模式主要区别在于Flink集群生命周期不同,资源分配方式不同,以及Flink应用程序的main 方法执行位置(Client客户端/JobManager)不同,
会话模式(Session Mode)
  • Session模式下我们首先会启动一个集群,保持一个会话,这个会话中通过客户端提交作业,集群启动时所有资源都已经确认,所以所有提交任务会竞争集群中的资源。
  • 这种模式适合单个作业规模小,执行时间短的大量作业。
  • 优势:只需要一个集群,所有作业提交后运行在一个集群,所有任务共享集群资源,每个任务执行完成后就释放资源。
  • 缺点:因为集群资源是共享的,所以资源不够了,提交新的作业就会失败,如果一个作业发生故障导致Taskmanager宕机,那么所有作业都会受到影响。
单作业模式(Per-Job Mode)
  • 为更好隔离资源而生,Per-Job 模式是每提交一个作业启动一个集群,集群只为这个作业而生,这种模式下客户端运行应用程序,然后启动集群,作业被提交给JobManager,然后分发给TaskManager执行,作业执行完之后集群关闭,所有资源释放
  • 优势:每个作业都有自己的JobManager管理独享当下左右集群资源,就算作业发生故障,对应TaskManager宕机也不影响其他作业,如果一个Application 有多个Job组成,那么每个Job都有自己独立的集群

  • 缺点:每个作业都在客户端享集群JobManager提交,如果一个时间点大量提交Flink作业会造成客户端占有大量网络带宽,会加重客户端所在节点的资源消耗。

  • 注意:Per-Job模式在Flink 1.15中已经弃用,后续版本会剔除,目前只有yarn支持。被Application 模式替代

应用模式(Application Mod)
  • Session 模式 和 Pre-Job模式都是客户端将作业提交给JobManager,这种方式需要占用大量网络带宽下载以来关系,并且将二进制包发送给JobManager。在业务中经常需要提交多个Flink作业并且是在同一个客户端节点提交,这样就更加加剧了客户端所在节点的资源消耗,为了降低客户端这种资源消耗,我们可以使用Application Mode

  • Application 模式与Per-job类似,只是不需要客户端,每个Application提交之后都启动一个JobManager,也就是创建一个集群,这个JobManager只为执行这一个Flink Application而存在,Application中的多个Job都会共用该集群, Application执行结束之后JobManager也就关闭了。这种模式下一个Application会动态创建自己的专属集群(JobManager),所有任务共享该集群,不同Application之间是完全隔离的,在生产环境中建议使用Application模式提交任务。

  • 以上三种Flink 任务部署方式生产环境优先用Application 模式,三者区别如下:
  1. Session模式现有Flink集群后在提交任务,任务在客户端提交运行,提交的多个作业共享Flink集群
  2. Per-Job 模式和Application模式都是提交Flink任务后创建集群
  3. Per-Job模式通过客户端提交Flink任务,每个Flink任务对应一个Flink集群,每个任务都有很好的资源隔离性
  4. Application模式是在JobManager 上执行main方法,为每一个Flink的Application创建一个Flink集群,如果Application油多个任务,这些Flink任务共享一个集群。
相关推荐
Lx35235 分钟前
Flink SQL在实时数仓中的应用
大数据
玥轩_5211 小时前
Git命令速查手册
大数据·git·elasticsearch·gitee·github·命令速查
口_天_光健1 小时前
制造企业的数据目录编写
大数据·数据库·数据仓库·数据分析
A-刘晨阳2 小时前
时序数据库选型指南:从大数据视角切入,聚焦 Apache IoTDB
大数据·apache·时序数据库·iotdb
汤姆yu2 小时前
基于大数据的短视频流量数据分析与可视化
大数据·数据挖掘·数据分析
Ribou2 小时前
Elasticsearch 9.2.0 三节点集群配置
大数据·elasticsearch·搜索引擎
啊吧怪不啊吧3 小时前
SQL之表的时间类内置函数详解
大数据·服务器·数据库·sql
迦蓝叶3 小时前
使用 Apache Jena 构建 Java 知识图谱
java·apache·知识图谱·图搜索·关系查询·关系推理
TDengine (老段)4 小时前
TDengine 产品组件 taosX
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
Hello.Reader4 小时前
Flink 流式计算的状态之道从 Table/SQL 语义到算子状态与 TTL 精准控制
sql·flink·linq