当前位置: 首页 > news >正文

Flink session cluster与Flink per-job cluster区别

Flink 中的 Session Cluster(会话集群)Per-Job Cluster(单作业集群) 是两种不同的集群部署模式,主要区别在于集群的生命周期、资源管理方式以及适用场景,具体如下:

1. 集群生命周期与作业关系

  • Session Cluster(会话集群)

    • 集群是预先启动的,生命周期独立于作业,可长时间运行。
    • 一个集群可以同时运行多个作业,所有作业共享集群的资源(TaskManager、Slot 等)。
    • 当所有作业结束后,集群仍可保留,等待接收新作业。
  • Per-Job Cluster(单作业集群)

    • 集群的生命周期与单个作业绑定:作业提交时自动创建集群,作业结束后集群立即销毁。
    • 一个集群只运行一个作业,资源完全为该作业独占。

2. 资源管理方式

  • Session Cluster

    • 资源(如内存、CPU)是预先分配的,所有作业共享固定的资源池。
    • 优点:启动作业时无需等待集群创建,响应速度快。
    • 缺点:资源竞争可能导致作业互相影响(如一个作业占用过多资源,导致其他作业资源不足);若集群崩溃,所有运行中的作业都会受影响。
  • Per-Job Cluster

    • 资源是动态分配的,作业提交时根据需求申请资源,作业结束后资源立即释放。
    • 优点:资源隔离性好,单个作业的失败或资源问题不会影响其他作业;资源利用率更高(按需分配)。
    • 缺点:每个作业都需要启动新集群,存在额外的启动开销(如申请 YARN 资源、启动 TaskManager 等)。

3. 适用场景

  • Session Cluster 适用场景

    • 短期、小批量作业(如频繁的 SQL 查询、小数据量处理)。
    • 对作业启动速度要求高的场景(无需等待集群创建)。
    • 资源需求稳定、作业之间互不干扰的场景。
  • Per-Job Cluster 适用场景

    • 长期运行的大规模作业(如 24/7 流式处理任务)。
    • 资源需求差异大的作业(避免资源竞争)。
    • 对稳定性和隔离性要求高的场景(如生产环境核心任务)。

4. 部署方式差异

  • Session Cluster

    • 需先手动启动集群(如通过 yarn-session.sh 在 YARN 上启动一个会话集群),再提交多个作业到该集群。
    • 示例:
      # 启动 YARN 会话集群
      ./bin/yarn-session.sh -n 3 -tm 4096  # 3个TaskManager,每个4GB内存
      # 提交作业到已启动的会话集群
      ./bin/flink run -m yarn-cluster ./examples/streaming/WordCount.jar
      
  • Per-Job Cluster

    • 无需预先启动集群,作业提交时自动创建集群,直接通过 flink run 命令指定 -m yarn-cluster 即可。
    • 示例:
      # 提交作业,自动创建单作业集群
      ./bin/flink run -m yarn-cluster ./examples/streaming/WordCount.jar
      

总结对比表

特性Session ClusterPer-Job Cluster
集群生命周期独立于作业,长期运行与单个作业绑定,作业结束即销毁
作业数量多个作业共享集群一个集群只运行一个作业
资源管理预先分配,共享资源池动态分配,资源独占
启动开销无(集群已预先启动)有(需创建新集群)
隔离性差(作业共享资源)好(资源独占)
适用场景短期、小批量、快速响应的作业长期、大规模、高隔离性的作业

选择哪种模式需根据作业特性、资源需求和稳定性要求决定。生产环境中,Per-Job Cluster 因隔离性好更常用于核心任务;Session Cluster 则适合开发调试或轻量作业。

http://www.dtcms.com/a/348675.html

相关文章:

  • Zynq开发实践(Verilog、仿真、FPGA和芯片设计)
  • Linux-函数的使用-编写监控脚本
  • 栈的创建和基本操作
  • Arbess V1.1.4版本发布,支持Mysql数据库,Ubuntu系统,新增SSH及Hadess上传下载任务
  • week4-[字符数组]月份
  • TCP连接与UDP协议
  • 构建现代前端工程:Webpack/Vite/Rollup配置解析与最佳实践
  • C++20: std::span
  • 目标检测数据集 第005期-基于yolo标注格式的PCB组件检测数据集(含免费分享)
  • 【Ollama】本地OCR
  • 基于SpringBoot的校园信息共享系统【2026最新】
  • pod管理
  • scanner、arrylist、反转数组
  • FPGA 时序分析(五)
  • 十、redis 入门 之 redis事务
  • (Redis)主从哨兵模式与集群模式
  • 【机器学习】7 Linear regression
  • VScode设置鼠标滚轮调节代码
  • 嵌入式第三十六天(网络编程(TCP))
  • springboot项目搭建步骤
  • 【Flink】部署模式
  • Maven项目中settings.xml终极优化指南
  • Excel 表格 - 乘法与除法处理(保留两位小数四舍五入实现、保留两位小数截断实现、添加百分号)
  • 单片机外设(七)RTC时间获取
  • 深入解析Java NIO多路复用原理与性能优化实践指南
  • 重置MySQL数据库的密码指南(Windows/Linux全适配)
  • 基于springboot的理商管理平台设计与实现、java/vue/mvc
  • 得物25年春招-安卓部分笔试题1
  • Linux camera 驱动流程介绍(rgb: ov02k10)(chatgpt version)
  • AlmaLinux 上 Python 3.6 切换到 Python 3.11