Flink 运行架构和核心概念

几个角色的作用:

  • 客户端:提交作业
  • JobManager进程 任务管理调度
    • JobMaster线程 一个job对应一个JobMaster 负责处理单个作业
    • ResourceManager 资源的分配和管理,资源就是任务槽
    • 分发器 提交应用,为每一个新提交的作业启动一个新的JobMaster 组件
  • TaskManager 处理数据,每个TaskManager 都包含一定的slots

作业提交过程(Standlone)

  1. 提交作业到客户端
  2. 客户端解析参数 提交任务到JobManager
  3. JobManager通过分发器启动并提交应用(作业图 JobGraph),一个作业对应一个JobMaster
  4. JobMaster 将作业图 解析为可执行的执行图 Execution Graph,得到所需要的资源数,向资源管理器请求slots
  5. 资源管理器 向TaskManager请求资源 也就是slots
  6. TaskManager 会向资源管理器注册自己的任务槽,并提供
  7. JobMaster 分发任务给TaskManager

核心概念

并行度

特定算子子任务的个数。

设置有三种方式

  • 代码中设置

stream.map(word -> Tuple2.of(word, 1L)).setParallelism(2);

  • 提交应用时设置 全局设置

bin/flink run --p 2 --c com.atguigu.wc.SocketStreamWordCount

./FlinkTutorial-1.0-SNAPSHOT.jar

  • 配置文件中设置

算子

算子有两种

  • 一对一 类似于窄依赖
  • 重分区 类似于shuffle

并行度相同的 一对一的算子可以合并 成为 算子链

// 禁用算子链

.map(word -> Tuple2.of(word, 1L)).disableChaining();

// 从当前算子开始新链

.map(word -> Tuple2.of(word, 1L)).startNewChain()

任务槽

TaskManager所分配的特定的资源(内存)

任务槽数量的设置,在配置文件中 默认的数量是1

taskmanager.numberOfTaskSlots: 8

任务槽只是隔离内存 不隔离cpu所以 一般会把任务槽的数量设置为cpu的核数,避免不同任务对cpu的争抢。

同一个作业中的不同任务节点的并行子任务,可以放到同一个slot中执行

任务槽和并行度的关系:

占用任务槽的数量等于作业的最大并行度。

参考资料:25_Flink运行时架构_核心概念_并行度设置&优先级_哔哩哔哩_bilibili

相关推荐
DO_Community5 分钟前
AMD旗舰GPU仅需4美元每小时,DigitalOcean上线Spot GPU实例
大数据·人工智能·agent·ai编程
有书Show27 分钟前
GEO发稿平台哪家好:2026生成式引擎优化新规下的平台评估维度
大数据·人工智能
微财经观圈1 小时前
酒店配送机器人如何选型:普渡和优地从安全到场景的全面对比
大数据·安全·机器人
学着改变2751 小时前
2026便携式超声波流量计性能白皮书 户外巡检适用性横评
大数据·网络·人工智能·科技·产品运营·量子计算
智途 Tech2 小时前
2026年分析多个Excel、CSV和网页数据的AI工具清单:Tabbit 浏览器多源引用
大数据·人工智能·excel
龙亘川2 小时前
数智赋能退役军人服务:V1.0 系统搭建全生命周期闭环服务体系
大数据·数据库·人工智能
Tongzhi20263 小时前
通芝科技考勤软件三大发展趋势:AI大模型、无感识别与数据底座
大数据·科技·算法·爬山算法
智购科技自动售卖机厂家3 小时前
2026自动售货机库存热力图分析:从设备分布到补货优先级的数据可视化实践~YH
大数据·python·信息可视化
SelectDB技术团队3 小时前
Apache Doris 5.0 年度版本前瞻(一):构建统一的多模湖仓实时分析平台
大数据·doris·数据湖·湖仓一体·lakehouse·湖仓分析·多模分析
eBest数字化转型方案3 小时前
Route Optimization for FMCG:多目标排线算法的工程实现
大数据·人工智能·算法