深入理解Flink Flink Job提交和Flink Graph详解

news/2025/3/10 13:32:27/文章来源:https://www.cnblogs.com/lilih888/p/18762492

Apache Flink是一个流处理框架,用于处理大规模的数据流。Flink Job的提交和Flink Graph是Flink实现数据处理任务的核心组成部分。本文将对Flink Job提交流程以及Flink Graph做一个详细的解析。

Flink Job提交流程

Flink Job的提交流程是指用户提交作业到Flink集群并开始执行的过程。这个过程主要包括以下几个关键步骤:

  1. 作业创建:用户通过Flink的API定义数据源、转换操作和数据汇。这些API操作会构建成一个作业图(Job Graph)。
  2. 作业提交:通过Flink客户端提交作业。作业可以提交给本地集群、远程集群或是通过Flink的Web UI提交。
  3. JobGraph生成:本地客户端将用户定义的作业编译成一个JobGraph,它是作业的逻辑表示,包含了作业的所有算子和数据流转信息。
  4. 作业优化:Flink的JobManager接收到JobGraph后,会对其进行优化,如算子链化(将多个算子合并为一个任务,以减少数据传输和调度开销)。
  5. JobGraph转化为ExecutionGraph:优化后的JobGraph被翻译为ExecutionGraph,它是Flink作业在集群上运行时的物理执行计划。ExecutionGraph包含了执行作业所需要的所有信息,如任务的并行度、物理位置等。
  6. 任务调度和执行:Flink集群中的JobManager根据ExecutionGraph对任务进行调度,将任务分配给TaskManagers执行。TaskManagers负责执行具体的任务,并将结果输出到指定的数据汇中。

Flink Graph详解

Flink Graph是理解Flink Job执行的基本单位。分为两种类型:JobGraph和ExecutionGraph。

  • JobGraph:是用户通过Flink API定义的数据处理逻辑的高级抽象。它由节点(算子)和边(数据流)组成。每个节点可以是一个source、transformation或sink。JobGraph关注的是逻辑层面,不涉及作业的并行执行信息。
  • ExecutionGraph:是Flink根据JobGraph生成的,用于在集群中执行的低层次的表示。它包含了作业真实运行时的所有信息,如任务的并行度和任务间的数据分区方式。ExecutionGraph是Flink进行任务调度和故障处理的依据。

在Flink中,每个算子(operator)链的执行都是由单独的任务(task)来完成的。算子链的设计减少了任务间数据的传输和通信开销,提高了执行效率。同时,Flink支持精细的控制算子链的行为,以适应不同的场景和优化需求。

总结

Apache Flink通过其高效的作业提交流程及灵活的Graph表示,为处理大规模数据流提供了强大的能力。理解Flink Job的提交与任务调度,以及Flink Graph的构建和优化,是深入掌握Flink并高效利用其处理能力的关键。Flink的设计哲学和强大功能使其成为实时数据处理领域的重要选择之一。

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

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

相关文章

001TypeScript开发实战

1、点击文件,点击打开文件夹 2、选择文件夹,打开文件夹 3、点击终端,新建终端 4、在终端内输入npm init vue@latest 按回车 5、写入项目名称 vue3-ts-cms 6、选择:这里我们先这样选择,Router(单页面应用开发)Pinia(状态管理)这次我们搭建一下7、 这里我们选择NO 可以看见…

​信创概念深度科普:从3大政策背景到5类典型应用场景全解析

信创,即信息技术应用创新产业,近年来在我国的科技发展领域占据着愈发重要的地位。它不仅仅是一个简单的产业概念,更是我国实现科技自立自强、保障国家信息安全的关键支撑。随着数字化时代的加速推进,信创产业迎来了前所未有的发展机遇,其涵盖的范围广泛,涉及到众多的政策…

数字逻辑 可编程阵列逻辑(PAL)

数字逻辑 可编程阵列逻辑(PAL) 参考书籍:数字逻辑基础与Verilog设计 原书第3版 P402 这里先给个可编程逻辑阵列(PLA)的例子。PLA的常用示意图中画X的就是选中的。 所以图 B.27 的计算过程为: \[\begin{align} P_1=& \ x_1x_2\\[1mm] P_2=& \ x_1 \overline x_{3…

基本项目目录解析

1、这里是说明vscode的相关配置的 recommendations 推荐的意思 最好安装的一些插件 这个必须安装 也可以看到这里有安装插件的弹窗 2、public这里是放入的我们的一些资源的 3、这里是放站点图标的,网站的的图标 4、src 就是放我们的源代码的5、node_modules 文件夹主要用来存…

ASE150N10-ASEMI中低压MOS管ASE150N10

ASE150N10-ASEMI中低压MOS管ASE150N10编辑:ll 强劲功率处理,驱动无限潜能 ASE150N10 最为亮眼之处在于它出色的电流承载能力。高达 150A 的连续漏极电流,如同一条奔腾不息的电子洪流,能够轻松应对各类大功率需求场景。想象一下,在电动汽车的动力控制系统里,它稳稳地调控着…

WMS系统能解决哪些仓储管理问题?

WMS系统能解决哪些仓储管理问题? ——库存锁库、库存预警、扫码出入库,这些都能搞定吗? 当然可以! 不仅如此,WMS系统还涵盖了订单管理、货物追踪、数据分析等功能。 今天咱们就来聊聊,仓储管理系统是如何实现库存锁定、提供库存预警、扫码出入库等操作的,帮你彻底解决仓…

task5.c

include<stdio.h> int main() { int s, year; s = 1000000000; year = s / 3600 / 24 / 365; if (year % 2 > 0) year += 1; printf("10亿秒约等于%d年\n", year); return 0; }

【牛客训练记录】2025年浙江中医药大学程序设计竞赛(同步赛)

训练情况赛后反思 C题犯蠢了,手玩几下就能猜出来的结论,结果自己想复杂了,以为是二分,D题又复现传智杯二分爆long long了,又没注意到,E题BFS搜索没记忆化MLE了 D题 传智杯二分爆long long重现,怒开__int128发现还是爆,只能边加边特判了,我们对于这题显然能观察到二分单…

unity模型无法播放动画的几种问题

1:代码中参数变量名称与动画控制器变量名称不一致导致 (左侧代码变量名称要与右侧动画控制器中的变量名称一致才能播放动画) 2:播放动画的对象子物体名称改动导致 例如:下方图中修改了玩家的子级对象object的名称,导致无法播放动画应该正确修改为使用对象得远子级object名称 时…

task3.c

include<stdio.h> int main() { char ans1, ans2; printf("每次课前认真预习、课后及时复习了没? (输入y或Y表示有,输入n或N表示没有) : "); ans1 = getchar(); getchar(); printf("\n动手敲代码实践了没? (输入y或Y表示敲了,输入n或N表示木有敲) : &…

Hadoop集群安装

一.环境准备我使用的是virtualBox虚拟机,没有可以去官网下载 虚拟机镜像是ubuntu server22.04,官网地址[注意]我的主机系统就是linux,如果是windows需要自己下载一些终端连接的工具 二.安装 1.虚拟机准备直接finish,开始配置网卡。简单点说,桥接网络我们用来上网的,其次是h…

task1_2.c

include<stdio.h> int main() { printf(" 0 \n"); printf("\n"); printf("I I\n"); printf(" 0 \n"); printf("\n"); printf("I I\n"); return 0; }