Flink 架构组件、任务链路、Slot 资源与集群形态 - 指南

news/2025/10/3 9:41:44/文章来源:https://www.cnblogs.com/yxysuanfa/p/19124335

1. 为什么先懂架构再写代码?

Flink 是分布式流处理系统。相同的作业,因资源管理任务并行度Slot 配置不同,性能差异可能是数量级的。理解运行时架构,能帮助你:

  • 更少机器跑出更高吞吐
  • 正确地做弹性伸缩故障恢复
  • Kubernetes / YARN / Standalone 等环境下平滑部署

2. 组件与职责速览

2.1 三类进程/角色

在这里插入图片描述

  • Client(客户端):负责编译、构建 JobGraph 并提交到集群。可 attached(持续拿进度)或 detached(提交后即断开)。

  • JobManager:调度与协调的大脑,包含三个子组件:

    • ResourceManager(RM)Slot 的供给与分配。对接 YARN/K8s/Standalone 资源提供者;Standalone 只能分配已有 TM,不能主动拉起 TM。
    • DispatcherREST 提交入口,为每个作业启动一个 JobMaster;同时承载 Web UI
    • JobMaster(JM)单个作业的执行控制器(一个作业一个 JM)。
  • TaskManager(TM):Worker 进程,执行算子子任务,负责数据缓冲与网络交换。每个 TM 持有若干 Task Slot

2.2 HA(高可用)要点

3. 任务是怎么“跑起来”的?

3.1 Operator Chain(算子链)

Flink 会把可链式的相邻算子合并到同一 Task 中,由一个线程执行,减少线程切换和缓冲开销,提升吞吐并降低延迟。链化行为可配置(禁止/强制/自动)。

在这里插入图片描述

上图中 Source→Map→Filter 被链成一个 Task(同线程),Window 由于需要分区/对齐,被放在下一个 Task。

3.2 并行度与 Subtask

每个算子根据 parallelism 拆成多个 subtask;链化后,一个 Task 内含多个 subtasks 的片段。Flink 会把这些任务分配到不同 Task Slot 上执行。

4. Task Slot:Flink 的资源刻度

工程意义:

常见配置(flink-conf.yaml):

taskmanager.numberOfTaskSlots: 4
# 受管内存、网络缓冲等也应配套调优
taskmanager.memory.process.size: 4096m
taskmanager.memory.managed.size: 1024m

5. 提交流程与集群形态

5.1 Flink Application(用户程序)

你的 main() 通过 ExecutionEnvironment 构建作业图并提交执行:

5.2 Session Cluster vs Application Cluster

维度Session ClusterApplication Cluster
生命周期预先存在、长时间运行;可接收多作业专属于单应用main() 在集群端运行;集群生命周期与应用绑定
资源隔离作业共享 RM/TM 资源;一个 TM 挂掉会影响其上运行的多个作业RM/Dispatcher 仅服务该应用,隔离性更好
启动/提交先起集群 → 再多次提交作业一步式:打包 JAR 即部署,入口调用 main() 生成 JobGraph
适用场景交互式/短作业频繁提交;起集群成本要低云原生应用、版本独立、强隔离、易运维(K8s 推荐)

快速选型

  • 多租户/交互式查询:Session Cluster
  • 生产应用/一应用一集群:Application Cluster(K8s 原生)

6. 典型部署食谱

6.1 Kubernetes(推荐)

  • Session Cluster(先起集群,再 flink run):

    • 优点:作业冷启动快;对多短作业友好
    • 缺点:多作业资源竞争,隔离弱
  • Application Cluster(一应用一集群):

    • 优点:隔离强、部署/升级流程清晰;观测面简单
    • 缺点:每应用一套 RM/JM,集群数量多时需平台化运维

K8s 关键点:

  • 使用 Native K8s 模式(kubernetes-session / kubernetes-application entrypoint)
  • 配置 HA(K8s StatefulSet + HA 存储,如 ZK/Consul 或 K8s HA 控制面)
  • Pod 资源与 taskmanager.numberOfTaskSlots 同步规划(CPU/Memory Request & Limit)

6.2 YARN

6.3 Standalone

  • 手工拉起 JM/TM;适合离线环境或嵌入式场景。RM 只能分配已有 TM 的 Slot,不能自动扩容

7. 性能与稳定性:实战调优清单

7.1 并行度与 Slot

  • 估算最高并行度 = 关键算子瓶颈并行度;集群 Slot 总数 ≥ 最高并行度
  • 充分利用 Slot Sharing;若需隔离,减少 sharing 或设置每 TM 1 Slot
  • 热点 Key 倾斜 → 预分区/加盐two-phase 聚合

7.2 网络与内存

7.3 调度与可靠性

  • 合理设置 checkpoint interval / timeout / max concurrent
  • Kafka Source 开启 exactly-once(两阶段提交/事务)
  • Restart Strategy:固定延时、失败率、或由平台托管的重启策略
  • HA:多 JM + 持久化元数据存储(ZK/文件系统)

7.4 可观测与告警

8. 常见坑与排查

  1. 并行度够、吞吐仍低

    • 算子未链化(operator chaining 被禁用或断链)
    • Slot 与资源规划不匹配(CPU/Memory 争用)
    • 下游 Sink 阻塞 → 观察 BackPressure
  2. 窗口迟迟不触发

    • 上游某分支无水位线(source idle)→ 开启 withIdleness
    • 多输入合并取最小水位 → 排查最慢支路
  3. 一个 TM 掉,多个作业跟着挂(Session)

    • 这是共享集群的限制;关键作业迁移至 Application Cluster 或提升 TM 稳定性
  4. 内存溢出/频繁 Full GC

    • Slot 数过多导致 JVM 压力大;RocksDB 内存与堆外未限制
    • 增大进程内存、限制 RocksDB write buffer/Block cache、优化序列化

9. 最小可用的配置骨架

flink-conf.yaml(示例)

# 并行度与 Slot
parallelism.default: 4
taskmanager.numberOfTaskSlots: 4
# 内存(示意值,需压测后定)
taskmanager.memory.process.size: 4096m
taskmanager.memory.managed.size: 1024m
# Checkpoint
execution.checkpointing.interval: 10000
execution.checkpointing.timeout: 60000
execution.checkpointing.max-concurrent-checkpoints: 1
state.checkpoints.dir: s3://flink/ckpt
state.savepoints.dir: s3://flink/savepoints
# HA(示例,按环境配置)
high-availability: org.apache.flink.kubernetes.highavailability.KubernetesHaServicesFactory

K8s Application Cluster 启动(示意)

# 打包后直接以 application 模式提交
flink run-application \
-t kubernetes-application \
-Dkubernetes.cluster-id=my-app \
-Dkubernetes.namespace=streaming \
-Dkubernetes.taskmanager.cpu=1 \
-Dtaskmanager.numberOfTaskSlots=1 \
local:///opt/flink/usrlib/job.jar

10. 结语:把抽象变成生产力

  • JobManager(RM/Dispatcher/JM) 负责调度协调,TaskManager 提供执行和数据交换;
  • Operator Chain 让任务更“紧凑”,Task Slot 决定资源刻度与并行承载;
  • Session Cluster 适合交互式与多租户,Application Cluster 适合强隔离的生产应用;
  • 生产稳定依赖于:合理的 Slot & 内存规划 + Checkpoint/HA + 观测告警

从今天起,先画清你的算子链与并行度,规划Slot 与内存,再选对集群形态。你会明显感受到:同样的代码,在正确的架构下跑得又快又稳。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/925731.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

盘锦网站建设广州建站网站

目录 一、项目概述 二、测试环境说明 三、测试方案 四、测试结果 五、结果分析 总结: 一、项目概述 1.1 编写目的 本次测试报告,为自动化测试框架性能测试总结报告。目的在于总结我们课程所压测的目标系统的性能点、优化历史和可优化方向。 1.2 …

包装材料网站建设廊坊建设部网站

Java NIO Files类读取文件流方式详解 Files类原理概述 java.nio.file.Files是Java标准库提供的一个工具类,用于操作文件和目录。它提供了一系列静态方法,可以用于创建、复制、删除、移动、重命名、读取、写入文件和目录等常见的文件系统操作。同时&…

贵阳市公共住宅投资建设集团官方网站北京网站优化排名

C语言中的函数指针是一种特殊的指针,它指向函数而不是数据。函数指针允许你在运行时动态地选择要调用的函数,这使得你可以根据需要在不同的函数之间切换,或者将函数作为参数传递给其他函数。函数指针的声明和使用如下: 声明函数指…

怎么做网站浮动模块网址大全2345电脑版下载

matlab2020可运行 GitHub - pareshbhambhani/MultiAgent-Flocking-framework: This is part of the current research I am working on.

达州市住房和城乡建设局网站长春专用网站建设

代码基于yolov5 v6.0 目录: yolo源码注释1——文件结构yolo源码注释2——数据集配置文件yolo源码注释3——模型配置文件yolo源码注释4——yolo-py 模型配置文件一般放在 models 文件夹下的 XXX.yaml 文件中,以 yolov5s.yaml 为例: # YOLOv…

2025盐酸优质厂家权威推荐榜:高纯度盐酸的品质之选

2025盐酸优质厂家权威推荐榜:高纯度盐酸的品质之选行业背景盐酸,作为一种重要的无机化工原料,在工业生产、化学实验等众多领域都有着广泛的应用。在工业生产中,盐酸常用于金属表面处理,如钢铁的酸洗,能够有效去除…

2025硫酸优质厂家权威推荐榜:高品质与强供应口碑之选

2025硫酸优质厂家权威推荐榜:高品质与强供应口碑之选行业背景硫酸作为一种重要的基础化工原料,在国民经济的多个领域都发挥着至关重要的作用。在化工生产中,它是许多化学反应的关键介质,广泛应用于肥料、塑料、合成…

2025冰乙酸供应厂家权威推荐榜:品质卓越与市场口碑双重保障

2025冰乙酸供应厂家权威推荐榜:品质卓越与市场口碑双重保障行业背景冰乙酸,作为一种重要的有机化工原料,在众多领域发挥着关键作用。在化学工业中,它是合成醋酸乙烯、醋酸纤维、醋酸酯等产品的基础原料,这些产品广…

工业氨水优质厂家推荐:实力制造商深度解析与选购指南

工业氨水优质厂家推荐:实力制造商深度解析与选购指南在现代化工产业体系中,工业氨水作为重要的基础化工原料,广泛应用于化肥生产、制药工艺、废水处理、金属加工等关键领域。随着我国制造业转型升级步伐加快,工业氨…

2025液碱厂家权威推荐榜:实力供应商深度解析与选择指南

2025液碱厂家权威推荐榜:实力供应商深度解析与选择指南在化工行业的产业链中,液碱作为基础性原料,其质量稳定性与供应商的专业能力直接影响着下游生产环节的运营效率。随着2025年环保政策趋严与产业升级加速,50%浓…

现在网站开发的前端语言wordpress 修改后台地址

有人说抖音摧毁了中国的年轻人,也有人说抖音改变了自己的生活形态,还有人说抖音让自己的生活过的更加有意义……一千个人眼中,有一千个哈姆雷特,各人有各个行使自己话语的权力,我们无从争辩。 对于做自媒体的同仁们来说抖音就是粉丝变现的另外一个渠道,那抖音具体的算法…

2025片碱厂家权威推荐榜:优质供应与实力生产口碑之选

2025片碱厂家权威推荐榜:优质供应与实力生产口碑之选在现代化工产业链中,片碱作为基础化工原料,其质量稳定性与供应可靠性直接影响着下游数十个行业的正常运转。从造纸、纺织到石油精炼,从污水处理到食品加工,片碱…

2025阳离子聚丙烯酰胺厂家推荐榜:高效絮凝与定制解决方案

2025阳离子聚丙烯酰胺厂家推荐榜:高效絮凝与定制解决方案随着环保要求的日益严格和水处理技术的快速发展,阳离子聚丙烯酰胺作为高效絮凝剂在市政污水处理、工业废水处理、污泥脱水等领域发挥着越来越重要的作用。202…

2025硫铵厂家权威推荐榜:实力生产与优质供应口碑之选

2025硫铵厂家权威推荐榜:实力生产与优质供应口碑之选在当今工业生产与农业发展的双重需求下,硫铵作为重要的化工原料和肥料成分,其质量与供应稳定性备受关注。随着市场竞争日益激烈,如何从众多生产厂家中筛选出真正…

2025年硫酸铵厂家权威推荐榜:实力生产与优质供应口碑之选

2025年硫酸铵厂家权威推荐榜:实力生产与优质供应口碑之选在全球化肥产业链中,硫酸铵作为重要的氮硫复合肥原料和工业添加剂,其质量稳定性与供应保障能力直接影响农业生产和工业生产效率。随着全球粮食安全战略的推进…

2025年硫化钠厂家权威推荐榜:优质供应商与实力制造商精选

2025年硫化钠厂家权威推荐榜:优质供应商与实力制造商精选硫化钠作为基础化工原料,在冶金、造纸、印染、水处理等工业领域具有不可替代的重要作用。随着环保政策的趋严和产业升级的加速,硫化钠行业正经历着深刻变革,…

怎么做代理人金沙网站小程序商城免费

Shiro 整合 SpringBoot shiro主要有三大功能模块 Subject:主体,一般指用户。 SecurityManager:安全管理器,管理所有Subject,可以配合内部安全组件。(类似于SpringMVC中的DispatcherServlet) Realms:用于…

2025 年热压机厂家 TOP 企业品牌推荐排行榜,深度剖析河北热压机,廊坊热压机,霸州热压机推荐这十家公司!

引言在人造板产业快速发展的当下,热压机作为板材加工环节的关键设备,其品质与性能直接影响企业的生产效率、产品质量及综合成本。然而,当前市场上热压机制造商数量众多,产品质量参差不齐,部分厂家存在技术研发能力…

【Anthropic好文】AI 代理的高效上下文工程

AI 代理的高效上下文工程来源:https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents 获取时间:2025-10-02 14:57:58 UTC在应用型 AI 领域经历了几年以提示工程为关注焦点之后,一个新…

AI与敏捷开发管理系列3:敏捷方法在AI计划中的应用案例

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …