第一篇|Flink运行架构剖析

Flink运行时架构 所有的Flink程序都由三部分组成:Source、Transformation和Sink。Source读取数据源,Transformation利用各种算子进行加工处理,Sink负责输出。Flink-conf.yaml -> taskmanager.numberOfTaskSlots:3 (建议值:CPU的核心数)控制一个应用程序执行的主进程,是Flink集群中任务管理和调度的核心。... 阅读详情

本文主要介绍 Flink Runtime 的作业执行的核心机制。首先介绍 Flink Runtime 的整体架构以及 Job 的基本执行流程,然后介绍Flink 的Standalone运行架构,最后对Flink on YARN的两种模式进行了详细剖析。

Flink Runtime作业执行流程分析

整体架构图

Flink Runtime 层的主要架构如下图所示,它展示了一个 Flink 集群的基本结构。整体来说,它采用了标准 master-slave 的结构,master负责管理整个集群中的资源和作业;TaskExecutor 则是 Slave,负责提供具体的资源并实际执行作业。

执行流程分析

组件介绍

Application Master 部分包含了三个组件,即 Dispatcher、ResourceManager 和 JobManager。其中,Dispatcher 负责接收用户提供的作业,并且负责为这个新提交的作业拉起一个新的 JobManager 组件。ResourceManager 负责资源的管理,在整个 Flink 集群中只有一个 ResourceManager。JobManager 负责管理作业的执行,在一个 Flink 集群中可能有多个作业同时执行,每个作业都有自己的 JobManager 组件。这三个组件都包含在 AppMaster 进程。

TaskManager主要负责执行具体的task任务,StateBackend 主要应用于状态的checkpoint。

Cluster Manager是集群管理器,比如Standalone、YARN、K8s等。

流程分析

1.当用户提交作业的时候,提交脚本会首先启动一个 Client进程负责作业的编译与提交。它首先将用户编写的代码编译为一个 JobGraph,在这个过程,它还会进行一些检查或优化等工作,例如判断哪些 Operator 可以 Chain 到同一个 Task 中。然后,Client 将产生的 JobGraph 提交到集群中执行。此时有两种情况,一种是类似于 Standalone 这种 Session 模式,AM 会预先启动,此时 Client 直接与 Dispatcher 建立连接并提交作业即可。另一种是 Per-Job 模式,AM 不会预先启动,此时 Client 将首先向资源管理系统 (如Yarn、K8S)申请资源来启动 AM,然后再向 AM 中的 Dispatcher 提交作业。

2.当作业到 Dispatcher 后,Dispatcher 会首先启动一个 JobManager 组件,然后 JobManager 会向 ResourceManager 申请资源来启动作业中具体的任务。如果是Session模式,则TaskManager已经启动了,就可以直接分配资源。如果是per-Job模式,ResourceManager 也需要首先向外部资源管理系统申请资源来启动 TaskExecutor,然后等待 TaskExecutor 注册相应资源后再继续选择空闲资源进程分配,JobManager 收到 TaskExecutor 注册上来的 Slot 后,就可以实际提交 Task 了。

3.TaskExecutor 收到 JobManager 提交的 Task 之后,会启动一个新的线程来执行该 Task。Task 启动后就会开始进行预先指定的计算,并通过数据 Shuffle 模块互相交换数据。

Flink Standalone运行架构

Flink Standalone运行架构如下图所示:

Standalone模式需要先启动Jobmanager和TaskManager进程,每一个作业都是自己的JobManager。
Client:任务提交,生成JobGraph

JobManager:调度Job,协调Task,通信,申请资源

TaskManager:具体任务执行,请求资源

Flink On YARN运行架构

关于YARN的基本架构原理,详见另一篇我的博客YARN架构原理

Per-Job模式

Per-job 模式下整个 Flink 集群只执行单个作业,即每个作业会独享 Dispatcher 和 ResourceManager 组件。此外,Per-job 模式下 AppMaster 和 TaskExecutor 都是按需申请的。因此,Per-job 模式更适合运行执行时间较长的大作业,这些作业对稳定性要求较高,并且对申请资源的时间不敏感。 1.独享Dispatcher与ResourceManager

2.按需申请资源(TaskExecutor)

3.适合执行时间较长的大作业

Session模式

在 Session 模式下,Flink 预先启动 AppMaster 以及一组 TaskExecutor,然后在整个集群的生命周期中会执行多个作业。可以看出,Session 模式更适合规模小,执行时间短的作业。
1.共享Dispatcher与ResourceManager

2.共享资源

3.适合小规模,执行时间较短的作业

Reference:
[1]ververica.cn/developers/…
[2]ververica.cn/developers/…

作者:大数据技术与数仓
链接:https://juejin.cn/post/6857497494214377480
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

Flink学习笔记(三):Flink四种执行图 在 JobGraph 的基础上结合各算子的并行度生成的就是 ExecutionGraph (ExecutionGraph与 JobGraph 最大的区别就是按照并行度将每个算子的任务拆分成了多个并行的子任务,并明确了任务间数据传输的方式。:代表由一个 Task 的生成的数据,和 ExecutionGraph 中的 IntermediateResultPartition 一一对应。:Execution 被调度后在分配的 TaskManager 中启动对应的 Task。用来表示程序的拓扑结构。 阅读详情

相关推荐

Flink系列三:Flink架构、独立集群搭建及Flink on YARN模式详解

Flink架构,Flink独立集群搭建与使用,Flink on yarn的三种部署模式(Application,Per-Job Cluster,Session )

weixin_52134189的博客 3969

【Flink---04】Flink运行时架构 『 系统架构 | 作业提交流程 | 数据流图 vs 作业图 vs 执行图 vs 物理图 | 并行度 | 任务槽| 算子任务 | 算子子任务』

1. 系统架构 1.1 概述 1.2 JobManager 1.3 TaskManager 2. 作业提交流程 2.1 抽象流程 2.2 yarn集群下流程(动态分配TaskManager⭐) 2.2.1 会话模式 2.2.2 单作业模式 2.2.3 应用模式 2.3 Standalone集群下流程(预先固定TaskManager个数⭐) 3. 一些重要概念 3.1 算子 3.2 并行度(Parallelism) (1) 什么是并行度? (2) 怎么设置算子的并行度? (3) 关于并行度的优化:合并算子链

渐渐的忘记,赶不上明天(读研ing,2024年毕业) 1115

Flink框架(一)---概念、运行模式、运行架构

Apache Flink是一个框架和分布式处理引擎,用于对无界和有界数据流进行有状态计算。有界流与无界流的区别:(1)有界流有定义流的开始,也有定义流的结束;无界流只定义了流的开始没有定义流的结束。(2)有界流可以在获取所有数据后再计算无界流必须在获取数据后立刻处理计算。(3)有界流也叫做批处理无界流也叫做流处理。有状态流处理:把流处理需要的额外数据保存成一个“状态”,然后针对这条数据进行处理,并且更新状态。

丷江南南的博客 2050

Apache Flink 进阶(六):Flink 作业执行深度解析

本文根据 Apache Flink 系列直播课程整理而成,由 Apache Flink Contributor、网易云音乐实时计算平台研发工程师岳猛分享。主要分享内容为 Flink Job 执行作业的流程,文章将从两个方面进行分享:一是如何从 Program 到物理执行计划,二是生成物理执行计划后该如何调度和执行。Flink 四层转化流程Flink 有四层转换流程,第一层为 Program 到 S...

Ververica的博客 695

Flink之Metric监控架构剖析

这几天开始接触linux IP 协议栈,并试着去让理论和源码结合起来去读,渐渐发现网络理论与网络编程 不是一个数量级上的,。结合代码和理论一起学,才能对网络有更深层次的理解。

jhkkhtd的专栏 757

【Flink入门(2)】Flink运行时架构

【Flink入门(2)】Flink运行时架构,包括4大组件和任务调度过程等

小C的博客 2840

Flink执行过程

Flink执行流程

qq_42456324的博客 4445

flink-之各种集群模式的运行时架构

flink-之各种集群模式的运行时架构 NOTE : flink的运行时架构是以flink application或者job为单位的,比如每个flink application都会有自己独立的运行时架构,但是不同的运行时架构可能可以共用公共集群资源。 本文参考文献如下。 flink客户端操作 flink开发环境搭建和应用的配置、部署及运行 flink on yarn\k8s原理剖析与实践 本文呢,主要讲解standalone cluster和yarn cluster的运行时架构,在客户端提交flink应

shufangreal的博客 867

Flink运行架构剖析

本文主要介绍 Flink Runtime 的作业执行的核心机制。首先介绍 Flink Runtime 的整体架构以及 Job 的基本执行流程,然后介绍Flink 的Standalone运行架构,最后对Flink on YARN的两种模式进行了详细剖析。 Flink相关资料 Flink Runtime作业执行流程分析 整体架构图 Flink Runtime 层的主要架构如下图所示,它展示了一个 Fl...

jmx_bigdata的博客 631

Unity性能优化 - 动态图集

Unity 动态图集是 Unity 引擎中用于处理游戏纹理优化的一种技术。本文介绍了什么是动态图集,动态图集的优缺点,以及提供了一套完整的代码供大家参考。

qq_33808037的博客 4840

[语义分割]SPP、空洞卷积与ASPP总结

ASPP全称:Atrous Spatial Pyramid Pooling,中文可以理解为空洞空间卷积池化金字塔或者多孔空间金字塔池化。在这其中,要理解两个概念:一个是SPP,池化金字塔结构或者叫空间金字塔池化层,都是一个东西;另一个是Atrous,空洞卷积,两个加在一起就是ASPP。 首先说一下SPP:Spatial Pyramid Pooling。这个结构出自于论文《Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Re

lipengfei0427的博客 2万+

【Flink】Flink架构深度剖析:JobManager与TaskManager

本文深入剖析了Apache Flink的架构设计,采用主从架构模式,由JobManager(主节点)和TaskManager(从节点)组成。JobManager作为"大脑",包含Dispatcher、ResourceManager和JobMaster三大组件,分别负责作业接收、资源管理和任务调度。TaskManager则是实际执行计算任务的"劳动力",通过Slot资源执行具体任务。文章详细介绍了作业提交与执行流程、Task与SubTask的概念、算子链与任务槽机制,以

weixin_63434398的博客 1065

UFS 功能描述:UFS boot

UFS 启动过程介绍:启动配置,启动代码下载过程和安全性

m0_51720747的博客 1601

Flink 运行时架构

一、系统架构 1.1 整体构成   Flink 的运行时架构中,最重要的就是两大组件:作业管理器(JobManger)和任务管理器(TaskManager)。对于一个提交执行的作业,JobManager 是真正意义上的“管理者”(Master),负责管理调度,所以在不考虑高可用的情况下只能有一个;而 TaskManager 是“工作者” (Worker、Slave),负责执行任务处理数据,所以可以有一个或多个。   这里首先要说明一下“客户端”。其实客户端并不是处理系统的一部分,它只负责作业的提交。具体来

mengxianglong123的博客 2401

从ADS到SystemVue:当简单链路预算不够用时,我的射频系统级仿真方案升级实录

本文详细介绍了从ADS到SystemVue的射频系统级仿真升级路径,重点分析了基础链路预算在多端口元件和复杂场景下的局限性,并提供了SystemVue在非线性系统验证和跨域协同分析中的优势。通过实际案例展示了如何平滑迁移工具链,提升仿真精度和效率,适用于5G、毫米波雷达等现代射频系统设计。

weixin_34233974的博客 343

从理论到实践:笛卡尔空间阻抗控制的实现挑战与变体解析

本文深入探讨了笛卡尔空间阻抗控制的核心原理、工程实现中的五大挑战及经典变体实战解析。通过详细的数学建模和实际案例分析,揭示了阻抗控制在工业机器人、医疗设备等领域的应用价值,特别是在力感知精度、动力学模型校准和实时计算等方面的关键技术突破。

weixin_30952535的博客 448

Flink 的运行架构详细剖析

1. Flink 程序结构 Flink 程序的基本构建块是流和转换(请注意,Flink 的 DataSet API 中使用的 DataSet 也是内部流 )。从概念上讲,流是(可能永无止境的)数据记录流,而转换是将一个或多个流作为一个或多个流的操作。输入,并产生一个或多个输出流。 Flink 应用程序结构就是如上图所示: Source: 数据源,Flink 在流处理和批处理上的 source 大概有 4 类:基于本地集合的 source、基于文件的 source、基于网络套接字的 source、自

yuan_more的博客 1252

pi/4QPSK调制解调原理

文章目录1. π/4\pi/4π/4QPSK 信号的调制原理2. 匹配滤波器与成形滤波器 1. π/4\pi/4π/4QPSK 信号的调制原理 减小相位突变量的QPSK由偏置键控QPSK(OK-QPSK)和 π/4\pi/4π/4偏置的QPSK( π/4\pi/4π/4QPSK)。由于 π/4\pi/4π/4QPSK是用差分相位编码产生的(因此也叫做 π/4\pi/4π/4DQPSK),能有效地进行差分解调和鉴频器解调,在一些不易提取相干载波的场合很有用。 在常规的QPSK中,输入数据经过串/并变换后,分成

gemengxia的博客 2万+

Flink运行架构

Flink运行架构 Flink 的运行架构以及Flink提交任务的流程和任务调度的原理剖析 Flink运行时的组件 Flink运行时架构主要包括四个不同的组件,它们会在运行流处理应用程序时协同工作:作业管理器(JobManager)、资源管理器(ResourceManager)、任务管理器(TaskManager),以及分发器(Dispatcher)。因为Flink是用Java和Scala实现的,所以所有组件都会运行在Java虚拟机上。每个组件的职责如下: 作业管理器(JobManager)

Nice的博客 492

晶圆测试(wafer sort)全流程解析:从探针卡到良率统计的实战指南

本文详细解析了晶圆测试(wafer sort)的全流程,从探针卡选型到良率统计的实战指南。涵盖了12英寸先进制程产线的关键技术,包括探针卡系统、测试程序开发、产线自动化集成及数据分析,特别聚焦多站点并行测试的时序优化和接触阻抗异常排查,帮助工程师提升测试效率与准确性。

weixin_29279153的博客 731

通达信指标加密DLL加密解密三个公式源码准确率90%以上超级指标精准买卖绝世指标

通达信指标加密DLL加密解密三个公式源码准确率90%以上超级指标精准买卖绝世指标 1 超级指标 指标公式:买卖提示非常明显(适合通达信) 指标源码如下: M:3 100 60 N 3 100 30 散户线: 100*(HHV(HIGH,M)-CLOSE)/(HHV(HIGH,M)-LLV(LOW,M));RSV:=(CLOSE-LLV(LOW,N))/(HHV(HIGH,N)-LLV(LOW,N))*100; K:=SMA(RSV,5,1); D:=SMA(K,3,1); J:=3*K-2*D;主力

m0_60244077的博客 3万+

Flink源码剖析

执行环境 ExecutionEnvironment数据抽象 DataSet DataStream逻辑操作 Source Transformation Sink1. 获取执行环境2. 通过执行环境对象,注册数据源Source,得到数据抽象3. 调用数据抽象的各种Transformation执行逻辑计算4. 将各自Transformation执行完毕之后得到的计算结果数据抽象注册Sink5. 提交Job执行。

weixin_37172178的博客 2605

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Flink运行架构及并行度设计深度剖析 —— 方法论、实践、壁垒与团队启发

Flink的架构与并行度设计,不仅是分布式流处理的技术典范,更是现代大规模数据平台、自动化运维、弹性资源管理等多领域可借鉴的工程样板。深入理解其机制、模式与工程壁垒,将极大提升团队技术厚度和平台竞争力。如果你对某一环节还想要更具体的源码剖析、架构图解或落地实践建议,欢迎随时留言探讨!

IT技术学习与工作笔记分享 1246

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

flink架构设计与运行流程剖析

一、架构设计 架构设计 ​ 各层及相关术语说明 物理层 解决flink的部署模式的问题 支持多种部署模式:本地,集群,云及k8s 用户可以根据不同的场景选择不同的部署模式 核心层 是flink的核心实现层,负责为上层的接口提供服务 Runtime flink的核心计算 Optimizer 负责任务的优化 Stream Buider 负责对任务进行DAG优化 API层 面向用户,负责更好的用户开发体验 提供了流计算和批处理..

xiaoppt的博客 428

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

flink运行原理_Flink运行架构剖析

本文主要介绍 Flink Runtime 的作业执行的核心机制。首先介绍 Flink Runtime 的整体架构以及 Job 的基本执行流程,然后介绍Flink 的Standalone运行架构,最后对Flink on YARN的两种模式进行了详细剖析。Flink Runtime作业执行流程分析整体架构图Flink Runtime 层的主要架构如下图所示,它展示了一个 Flink 集群的基本结构。整...

weixin_39752941的博客 309

Flink架构概览,Flink DataStream API 的使用,FlinkCDC的使用

Flink是一个高性能的分布式流处理引擎,支持精确一次(Exactly-Once)语义,广泛应用于大数据实时处理场景。其核心架构包括Client、JobManager、TaskManager和Slot,分别负责作业提交、调度、任务执行和资源管理。Flink与Hadoop生态系统深度集成,能够与HDFS、Hive、Kafka、HBase、YARN和Zookeeper等组件协同工作,构建完整的大数据处理链路。例如,Flink可以直接读取HDFS中的数据,将计算结果写入Hive表,或通过Kafka进行实时数据采集

lrj41781196的博客 2543
上一篇: 第二篇|Flink DataSet API编程指南
下一篇: Redis面试题
wrr-cat
博客等级 码龄9年 128粉丝 302原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值