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

Flink运行架构深度解析:从核心组件到实战提交

一、Flink运行架构概述

Flink作为一个分布式流式计算引擎,其运行架构主要围绕JobManagerTaskManager两大核心组件展开。

1. JobManager(Master)

负责协调分布式任务的执行,包括任务调度、资源申请、检查点协调和故障恢复等。一个Flink集群可配置多个JobManager实现高可用。

2. TaskManager(Worker)

实际执行任务的节点,每个TaskManager是一个独立的JVM进程,可运行一个或多个任务(Task)。任务通过Slot进行资源隔离和管理。

3. 集群部署模式

  • Standalone模式:Flink自带ResourceManager,负责Slot分配。

  • Yarn/K8s模式:由外部资源调度框架(如Yarn)担任ResourceManager角色。


二、并发度与Slots详解

1. Slot:资源隔离的基本单元

每个TaskManager可配置多个Slot(通过taskmanager.numberOfTaskSlots),Slot代表TaskManager内的一块固定资源子集(内存隔离)。Slot之间不隔离CPU,仅在同一个JVM内做内存隔离。

例如:若集群有3个TaskManager,每个配置1个Slot,则集群共有3个Slot。

2. 并行度(Parallelism):动态执行能力

并行度是指程序运行时实际使用的并发数量,是一个动态概念。Flink允许在三个层面设置并行度,优先级从高到低如下:

  1. 代码中指定(最高优先级)

    java

    env.setParallelism(4); dataStream.map(...).setParallelism(2);
  2. 提交任务时指定
    通过命令行或Web UI提交时设置-p参数。

  3. 配置文件指定(最低优先级)
    flink-conf.yaml中设置parallelism.default

若所需Slot数 > 集群可用Slot数,任务将阻塞或抛出异常。


三、开发环境搭建与示例程序

1. Maven依赖

xml

<dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-java</artifactId> <version>1.12.5</version> </dependency> <dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-streaming-java_2.12</artifactId> <version>1.12.5</version> </dependency>

2. 示例:Socket词频统计(流式WordCount)

java

public class SocketWordCount { public static void main(String[] args) throws Exception { StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(1); ParameterTool params = ParameterTool.fromArgs(args); DataStream<String> input = env.socketTextStream(params.get("host"), params.getInt("port")); DataStream<Tuple2<String, Integer>> counts = input .flatMap(new Splitter()).setParallelism(2) .keyBy(0) .sum(1).setParallelism(3); counts.print(); env.execute("Socket WordCount"); } }

3. 本地运行(LOCAL模式)

  1. 启动Socket服务端:

    bash

    nc -lk 7777
  2. 在IDE中配置程序参数:--host hadoop01 --port 7777

  3. 运行程序,输入文本即可实时看到词频累加结果。


四、提交到集群执行与并行度分析

1. 打包与提交

  1. 使用Maven打包生成FlinkDemo-1.0.jar

  2. 通过Flink Standalone Web UI提交:

    • 进入Submit New Job页面

    • 上传JAR文件

    • 指定入口类与全局并行度

2. 任务执行视图

提交后可在Running Jobs页面查看:

  • 数据流图:展示任务执行的各阶段与数据流向

  • Slot占用情况:每个步骤的并行度与Slot数量

3. Slot复用机制

即使一个任务需要的总Slot数(如7个)大于集群总Slot数(如3个),任务仍可运行,因为Slot在不同执行阶段可复用。只要集群Slot数 ≥ 任务中最大并行度所需的Slot数,任务即可执行。

4. 资源竞争与等待

若集群Slot被占满,新任务将等待并重试申请Slot(默认重试10次后暂停)。在attached模式下,客户端会持续输出申请进度。


五、Flink整体运行流程

1. 客户端提交任务

  • 方式:Java程序调用 或./bin/flink run命令

  • 模式

    • Per-job模式:在客户端构建JobGraph后提交

    • Application模式:提交到集群后由JobManager构建JobGraph

  • 连接模式

    • Attached(默认):客户端持续跟踪任务状态

    • Detached:提交后客户端立即退出

2. JobManager内部组件

组件职责
ResourceManager管理Slot资源(Standalone/Yarn/K8s)
Dispatcher提供REST接口与Web UI,为每个任务启动JobMaster
JobMaster管理单个JobGraph的执行

3. 执行流程

text

Client → 提交JobGraph + JAR包 → JobManager → 转换为ExecutionGraph(执行计划) → 向ResourceManager申请Slot → 分发任务到TaskManager → 启动执行

4. TaskManager与Slot

  • 每个TaskManager可配置多个Slot(taskmanager.numberOfTaskSlots

  • 每个Slot对应一个执行线程

  • Slot在同一个任务内可共享,一个Slot即可贯穿整个处理流程


总结

Flink通过JobManagerTaskManager的分离设计,实现了高效的分布式流处理能力。Slot作为资源单位提供内存隔离,并行度作为执行单位提供弹性伸缩。任务通过JobGraph → ExecutionGraph的转换在集群中调度执行,支持Slot复用与多任务并发运行。

掌握Flink的运行架构,有助于在实际开发中合理设置并行度、优化资源使用,并快速定位任务执行中的资源与性能问题。

http://www.jsqmd.com/news/368436/

相关文章:

  • 世毫九实验室关于核心技术知识产权保护的维权声明
  • 2026年乐山美食街厂家推荐:乐山旅游小吃推荐、乐山最出名的三个小吃、乐山本地人去的小吃街、乐山本地人推荐美食选择指南 - 优质品牌商家
  • 2026年声光报警器生产商厂家最新推荐:声光报警器公司、声光报警器制造企业、声光报警器制造商、声光报警器厂商选择指南 - 优质品牌商家
  • mpip 如何获取Mpi调用的总次数 awk
  • how to compile mpich with gcc
  • [技术硬核] 跨境电商供应链的“数据中台”:深度解析 Python+RPA 如何实现 1688 采集与自动上架的无缝流转
  • LeetCode热题100--287. 寻找重复数--中等
  • 2026年河北聚氨酯冷库板厂家最新推荐:甘肃保温材料/兰州保温材料/兰州金属岩棉复合板/河北保温材料/选择指南 - 优质品牌商家
  • 2026年知名的温州公司办公家具哪家强品牌厂家推荐 - 品牌宣传支持者
  • 2026年乐山特色小吃店厂家推荐:乐山大佛附近油炸哪家好吃/乐山好吃的油炸/乐山小吃哪家正宗/乐山小吃哪家正宗/选择指南 - 优质品牌商家
  • 面向对象高级2
  • Unity 3D粒子与UI层级冲突全解析
  • hcomm:异构计算分布式通信加速器深度解读
  • 2026年宜兴刮泥机服务公司深度解析与优选推荐 - 2026年企业推荐榜
  • 硬核邀请 | 沸腾代码,浸润技术:vLLM Ascend AtomGit 沉浸式汤泉 Debug 来了
  • Modbus RTU转TCP,不换工业设备就能快速实现!
  • CANN Catlass:AI 处理器高性能计算的核心引擎
  • CANN Runtime:AI 处理器的运行核心与计算编排中枢
  • VibeLand上线:面向中国vibe coding玩家的一键部署平台发布
  • CANN Runtime:Ascend AI 处理器上的 AI 应用执行引擎
  • 2026年口碑好的乐清办公家具桌椅生产厂家采购指南帮我推荐几家 - 品牌宣传支持者
  • 2026年发电机租赁厂家推荐:柴油空压机保养、柴油空压机租赁、柴油空压机维修、电动空压机保养、电动空压机租赁选择指南 - 优质品牌商家
  • 2026年HOMEDEPOT验厂咨询厂家推荐:化妆品认证咨询、反恐验厂咨询、翠鸟认证咨询、质量验厂咨询选择指南 - 优质品牌商家
  • 2026年江苏折叠健身器材采购指南:五强企业深度剖析 - 2026年企业推荐榜
  • 2026年浙江激光笔生产商综合评估:六家领先企业深度解析 - 2026年企业推荐榜
  • 2026年全空气五恒系统公司权威推荐:家用五恒系统、成都五恒系统、成都绿建、系统门窗、遮阳系统、重庆五恒系统选择指南 - 优质品牌商家
  • 2026年武汉东湖高新区小学英语服务商权威评估 - 2026年企业推荐榜
  • 2026年茶歇服务厂家最新推荐:答谢冷餐会/自助冷餐/茶歇会/茶歇公司/茶歇冷餐会/茶歇外送/茶歇承接/选择指南 - 优质品牌商家
  • 基础模型团队如何规划组织架构
  • 严寒工程优选指南:2026新疆超低温防水卷材品牌综合评估 - 2026年企业推荐榜