Flink学习笔记(三):Flink四种执行图

news2024/12/26 3:28:15

文章目录

  • 1、Graph 的概念
  • 2、Graph 的演变过程
    • 2.1、StreamGraph (数据流图)
    • 2.2、JobGraph (作业图)
    • 2.3、ExecutionGraph (执行图)
    • 2.4、Physical Graph (物理图)

1、Graph 的概念

作业提交和任务处理
Flink 中的执行图可以分成四层:StreamGraph -> JobGraph -> ExecutionGraph -> Physical Graph

StreamGraph(数据流图):是根据用户通过 Stream API 编写的代码生成的最初的图。用来表示程序的拓扑结构。

JobGraph(作业图):StreamGraph经过优化后生成了 JobGraph,提交给 JobManager 的数据结构。主要的优化为,将多个符合条件的节点 chain 在一起作为一个节点,这样可以减少数据在节点之间流动所需要的序列化/反序列化/传输消耗。

ExecutionGraph(执行图):JobManager 根据 JobGraph 生成 ExecutionGraph。ExecutionGraph 是 JobGraph 的并行化版本,是调度层最核心的数据结构。

Physical Graph(物理图):JobManager 根据 ExecutionGraph 对 Job 进行调度后,在各个TaskManager 上部署 Task 后形成的 “图”,并不是一个具体的数据结构。

2、Graph 的演变过程

2个并发度(Source为1个并发度)的 SocketTextStreamWordCount 四层执行图的演变过程:

env.socketTextStream()
	.flatMap()
	.keyBy(0)
	.sum(1)
	.print();

演变图过程

2.1、StreamGraph (数据流图)

数据流图(StreamGraph):在运行时,Flink 程序按照 算子逻辑 生成一个有向无环图DAG),这个图就是 数据流图(StreamGraph)。

  • StreamNode:用来代表 operator 的类,并具有所有相关的属性,如并发度、入边和出边等。
  • StreamEdge:表示连接两个 StremNode 的边。

2.2、JobGraph (作业图)

StreamGraph 经过优化后生成的就是 JobGraph。主要的优化为: 合并算子链,提交给 JobManager 的数据结构。

  • JobVertex:经过优化后符合条件的多个 StreamNode 可能会chain在一起生成一个 JobVertex,即一个 JobVertex 包含一个或多个operator,JobVertex 的输入是 JobEdge ,输出是 IntermediateDataSet。
  • IntermediateDataSet:表示 JobVertex 的输出,即经过 operator 处理产生的数据集。producer 是 JobVertex ,consumer 是 JobEdge。
  • JobEdge:代表了 job graph 中的一条数据传输通道。source 是 IntermediateDataSet,target 是 JobVertex。即数据通过 JobEdge 由 IntermediateDataSet 传递给目标 JobVertex 。

2.3、ExecutionGraph (执行图)

JobManager 根据 JobGraph 生成 ExecutionGraph。ExecutionGraph 是 JobGraph 的并行化版本,是调度层最核心的数据结构。在 JobGraph 的基础上结合各算子的并行度生成的就是 ExecutionGraph (ExecutionGraph与 JobGraph 最大的区别就是按照并行度将每个算子的任务拆分成了多个并行的子任务,并明确了任务间数据传输的方式。)

  • ExecutionJobVertex:和 JobGraph 中的 JobVertex 一一对应。每一个 ExecutionJobVertex 都有和并发度一样多的 ExecutionVertex。

  • ExecutionVertex:表示 ExecutionJobVertex 的其中一个并发子任务,输入是 ExecutionEdge,输出是 IntermediateResultPartition 。

  • IntermediateResult:和 JobGraph 中的 IntermediateDataSet 一一对应。一个 IntermediateResult 包含多个 IntermediateResultPartition ,其个数等于该 operator 的并发度。

  • IntermediateResultPartition:表示 ExecutionVertex 的一个输出分区,producer 是 ExecutionVertex,consumer 是若干个 ExecutionEdge。

  • ExecutionEdge:表示 ExecutionVertex 的输入,source 是 IntermediateResultPartition,target 是 ExecutionVertex。source 和 target 都只能是一个。

  • Execution:是执行一个 ExecutionVertex 的一次尝试。当发生故障或者数据需要重算的情况下 ExecutionVertex 可能会有多个ExecutionAttemptID。一个 Execution 通过 ExecutionAttemptID 来唯一标识。JobManager 和 TaskManager 之间关于 task 的部署和 task status 的更新都是通过 ExecutionAttemptID 来确定消息接受者。

2.4、Physical Graph (物理图)

JobManager 根据 ExecutionGraph 对 Job 进行调度后,在各个 TaskManager 上部署 Task 后形成的“图”,并不是一个具体的数据结构。

  • Task:Execution 被调度后在分配的 TaskManager 中启动对应的 Task。Task 包裹了具有用户执行逻辑的 operator。

  • ResultPartition:代表由一个 Task 的生成的数据,和 ExecutionGraph 中的 IntermediateResultPartition 一一对应。

  • ResultSubpartition:是 ResultPartition 的一个子分区。每个 ResultPartition 包含多个 ResultSubpartition,其数目要由下游消费 Task 数和 DistributionPattern 来决定。

  • InputGate:代表 Task 的输入封装和 JobGraph 中 JobEdge 一一对应。每个 InputGate 消费了一个或多个的 ResultPartition。

  • InputChannel:每个 InputGate 会包含一个以上的 InputChannel,和 ExecutionGraph 中的 ExecutionEdge 一一对应,也和 ResultSubpartition 一对一地相连,即一个 InputChannel 接收一个 ResultSubpartition 的输出。

Flink物理执行图

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

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

相关文章

2023年下半年软考机考考试时间批次安排

中国计算机技术职业资格网发布了关于2023年下半年计算机技术与软件专业技术资格(水平)考试批次安排的通告,2023年下半年软考机考考试时间批次安排详见正文。 原文如下: 按照《2023年下半年计算机技术与软件专业技术资格&#xff…

2023年中国酒类新零售行业发展概况分析:线上线下渠道趋向深度融合[图]

近年来,我国新零售业态不断发展,线上便捷性和个性化推荐的优势逐步在放大,线下渠道智慧化水平持续提升,线上线下渠道趋向深度融合。2022年,我国酒类新零售市场规模约为1516亿元,预计2025年酒类新零售市场规…

STM32的hex文件格式的分析

前言 最近研究Bootloader,通过串口实现STM32程序的更新。需要学习了解STM32的Hex文件格式。在这进行一下总结。 HEX文件格式 我们通过文本形式打开hex文件,可以看到: 这一行就是一条指令数据,这里对数据帧格式进行说明&#xff…

c++_learning-模板与泛型编程

模板与泛型编程 模板概念、函数模板定义、调用:各种函数:替换失败不是一个错误SFINAE(substitution failure is not an error):由来:特性: *c11引入的类模板enable_if,体现了SFINAE的…

Hive安装配置 - 内嵌模式

文章目录 一、Hive运行模式二、安装配置内嵌模式Hive(一)下载hive安装包(二)上传hive安装包(三)解压缩hive安装包(四)配置hive环境变量(五)关联Hadoop&#x…

电容元件符号与工作原理:电子电路中的电荷储存利器 | 百能云芯

电容是电子电路中常见的元件之一,它具有储存电荷的能力。在电路图中,电容有一个特定的元件符号,用于表示其存在和连接方式。接下来,云芯带您深入了解电容的元件符号以及它的工作原理。 电容的元件符号通常由两个平行的线段组成&am…

基于CNN实现谣言检测 - python 深度学习 机器学习 计算机竞赛

文章目录 1 前言1.1 背景 2 数据集3 实现过程4 CNN网络实现5 模型训练部分6 模型评估7 预测结果8 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 基于CNN实现谣言检测 该项目较为新颖,适合作为竞赛课题方向,学长非常推荐&am…

【第24例】华为 IPD 体系 | RMT 需求管理团队

目录 简介 内容 相关内容推荐(CSDN学院) 作者简介 简介 需求管理团队RMT是英文Requirement Management Team首字母的简称。 细分的话还包括: PL-RMT(产品线需求管理团队,Product Lin

使用Portainer图形化工具轻松管理远程Docker环境并实现远程访问

文章目录 前言1. 部署Portainer2. 本地访问Portainer3. Linux 安装cpolar4. 配置Portainer 公网访问地址5. 公网远程访问Portainer6. 固定Portainer公网地址 前言 Portainer 是一个轻量级的容器管理工具,可以通过 Web 界面对 Docker 容器进行管理和监控。它提供了可…

【神印王座】伊莱克斯正式登场,皓晨通过永恒试炼,喜提两外挂,采儿丧失四感

Hello,小伙伴们,我是小郑继续为大家深度解析国漫资讯。 神印王座动画更新,龙皓晨在雅婷与皓月的帮助下,两次探索悲啸洞穴后成功闯入永恒之塔。在第78集预告中,伊莱克斯闪亮登场,皓晨通过永恒试炼成为新一代死灵圣法师&…

纯函数 和 函数柯里化 ( 函数式编程 )05

加油,今天周二啦!😍 文章目录 一、js 的纯函数二、JavaScript 柯里化三、柯里化作用四、将多个普通的函数,自动转成柯里化函数五、理解组合函数 一、js 的纯函数 函数式编程中有一个非常重要的概念叫纯函数,JavaScript…

C++设计模式_08_Factory Method工厂方法模式

文章目录 1. “对象创建模式”模式1.1 典型模式 2. 动机(Motivation)3. 代码演示Factory Method工厂方法模式3.1 常规方法3.2 面向接口的编程3.2.1 FileSplitter1.cpp3.2.2 MainForm1.cpp 3.3 Factory Method工厂方法3.3.1 ISplitterFactory.cpp3.3.2 Ma…

冰河公开了常逛的23大学习网站,赶快收藏

大家好,我是冰河~~ 最近有小伙伴问我:冰河,你有啥好的学习资源或者网站没?分享一下可以吗?这不,我连夜给大家整理了一波,走起~~ 赶快收藏,悄悄努力,然后惊艳所有人&…

睿趣科技:现在开抖音小店到底要多少钱

随着短视频平台的兴起,抖音小店成为了越来越多创业者的选择。那么,现在开抖音小店到底要多少钱呢?这个问题涉及到以下几个方面的费用。 首先,我们需要了解的是,开设抖音小店本身是免费的。你只需要在抖音APP上申请开店&#xff0…

迁移conda环境后,非root用户执行pip命令和jupyter命令报错/bad interpreter: Permission denied

移动conda环境,在移动的环境执行pip和jupyter 报错-bash: /data/home/用户名/anaconda3/envs/llm/bin/pip: /root/anaconda3/envs/llm/bin/python: bad interpreter: Permission denied 报错信息 一、原因 原因是当前的这个data/home/用户名/anaconda3/envs/环境名…

2183440-41-5,138589-19-2,FAM amine, 5-isomer可以与蛋白质或核酸结合

试剂 | 基础知识概述(部分): 【中文名称】FAM-胺,5-异构体 【英文名称】FAM amine, 5-isomer 【CAS】2183440-41-5,138589-19-2 【分子式】C27H27ClN2O6 【分子量】511.0 【Ex】: 490 【Em】: 513 规格标准:10…

文章必备| 叶绿体基因组高级分析内容汇总

叶绿体普遍存在于植物体中,叶绿体基因组是一个典型的双链环状DNA分子,一个植物当中含有多个叶绿体,一个叶绿体中含有12个cpDNA分子。 常见的植物叶绿体基因组大小一般在150-160 kb左右,藻类会略小一些,在80-100 kb左右…

基于RFID技术的烟草供应链数字化管理方案

一、背景介绍 在国家烟草局对烟草行业标准化管理的要求下,工业企业和商业企业纷纷实施烟草编码和扫描,以实现烟草生产和物流过程的跟踪管理。然而,传统的人工管理方法存在工作量大、效率低、错误率高等问题,难以满足现代经济竞争…

Linux下使用openssl为harbor制作证书

openssl是一个功能丰富且自包含的开源安全工具箱。它提供的主要功能有:SSL协议实现(包括SSLv2、SSLv3和TLSv1)、大量软算法(对称/非对称/摘要)、大数运算、非对称算法密钥生成、ASN.1编解码库、证书请求(PKCS10)编解码、数字证书编解码、CRL编解码、OCSP协议、数字证…

做好文件外发管理,助力企业安全高效的进行文件共享

信息化时代,考虑到文件传输的便捷和快速,大多采用电子文件的形式完成。电子文档传播性强,但容易被拷贝传输,因此对于发给客户或合作伙伴的重要资料,都需要做好文件外发管理策略,不然随时可能被以明文的形式…