首页 > 其他分享 >Flink执行图

Flink执行图

时间:2024-05-15 15:43:35浏览次数:17  
标签:JobMaster ExecutionGraph Flink 作业 JobGraph 执行

Flink的代码编写流程为env->source->transform->sink,基本所有的代码都是大致按照图1的流程进行代码编写,当然中间也会有一些封装之类的。

  Flink代码写好后,它的任务调度执行图按照生成顺序分为:逻辑流图(StreamGraph)->作业图(JobGraph)->执行图(ExecutionGraph)->物理图(Physical Graph),总共四层。

逻辑流图:根据用户通过DataStreamAPI编写的代码生成的最初的DAG图,用来表示程序的拓扑结构。这一步一般在客户端完成。
作业图:StreamGraph经过优化后生成的就是作业图(JobGraph),这是提交给JobManager 的数据结构,确定了当前作业中所有任务的划分。主要的优化为: 将多个符合条件的节点链接在一起合并成一个任务节点,形成算子链,这样可以减少数据交换的消耗。JobGraph一般也是在客户端生成的,在作业提交时传递给JobMaster。
执行图:JobMaster收到JobGraph后,会根据它来生成执行图(ExecutionGraph)。ExecutionGraph 是JobGraph的并行化版本,是调度层最核心的数据结构。
物理图:JobMaster 生成执行图后,会将它分发给 TaskManager;各个 TaskManager 会根据执行图部署任务,最终的物理执行过程也会形成一张“图”,一般就叫作物理图(Physical Graph)。这只是具体执行层面的图,并不是一个具体的数据结构。

  

 

 

标签:JobMaster,ExecutionGraph,Flink,作业,JobGraph,执行
From: https://www.cnblogs.com/beststrive/p/18193985

相关文章

  • 用javax.ws.rs.client.Invocation queryParam 执行url中带参数的请求
    来自于百度AI,为了实际需要,改成我自己的环境。importlombok.AllArgsConstructor;importlombok.Data;importlombok.NoArgsConstructor;importorg.apache.commons.lang3.StringUtils;importorg.glassfish.jersey.client.ClientConfig;importorg.glassfish.jersey.client......
  • Libz打包/合并DLL与可执行文件(EXE)
    Libz是一个.NET的库,它提供了一种方法将多个DLLs和其他资源打包进一个单独的可执行文件(EXE)或另一个动态链接库(DLL)。Libz的功能类似于ILMerge,但它提供了更多的灵活性和功能,特别是对于处理压缩和资源管理。Libz使用了自定义的加载器来在运行时解压和加载程序集和资源,这样可以减少部署......
  • openGauss 通过创建临时表并截断原始表来执行深层复制
    通过创建临时表并截断原始表来执行深层复制该方法使用CREATE**TEMP**TABLE...AS语句创建原始表的临时表,然后截断原始表并从临时表填充它完成原始表的深层复制。在新建表需要保留父表的主键属性,或如果父表具有依赖项的情况下,建议使用此方法。操作步骤使用CREATE**TEMP*......
  • XShell执行systemctl stop network命令后断开连接,并重连失败
    在XShell中执行命令systemctlstopnetwork后,断开了与虚拟机的连接,进行重新连接,显示连接失败,停止虚拟机网络服务后,XShell无法继续连接。需要重启虚拟机的网络服务【1】重启解决systemctlstopnetwork是暂时关闭服务,不是永久的,所以重启后会自启。在主机有网络的情况下,重启......
  • Python执行PostgreSQL数据库查询语句,并打印查询结果
    哈喽,大家好,我是木头左!准备工作:安装必要库和设置数据库连接在开始使用Python执行PostgreSQL数据库查询之前,需要确保已经安装了psycopg2这个库,它是Python语言中用来操作PostgreSQL数据库的一个适配器。可以通过以下命令进行安装:pipinstallpsycopg2-binary安装完成后,需要创......
  • django启动时执行某个操作数据库的方法怎么实现
    为了让django启动时就执行某些方法做了如下尝试一、在Django中,可以通过AppConfig类的ready()方法来实现在Django启动时执行某个方法。首先,在你的应用的apps.py文件中,创建一个继承自AppConfig类的子类,并重写ready()方法。例如,假设你的应用名为myapp,则可以创建一个MyAppConfig类:......
  • 打包python为 exe 可执行文件
    这里使用 pyinstaller 进行打包有多种方式打包为exe, 如 pyinstaller  cx_Freeze  py2exe   py2app   Nuitka   Nuitka+pyinstaller一、首先安装pyinstaller下载地址:http://download.csdn.net/detail/zj910092147/7827835传统......
  • 【SpringBoot】实现项目启动后执行的两个接口ApplicationRunner和CommandLineRunner
    开发中可能会有这样的场景,需要在容器启动的时候执行一些内容。比如读取配置文件,数据库连接之类的。SpringBoot给我们提供了两个接口来帮助我们实现这种需求。两个启动加载接口分别是:CommandLineRunner和ApplicationRunner。Spring提供了接口InitializingBean,jdk提供了@PostCo......
  • Playwright执行 JavaScript 脚本:探索浏览器自动化的新境界
    前言我们在进行web自动化时,经常遇到一些不好操作的元素,普通的元素定位和操作容易报错,如果我们使用的selenium的话,就可以使用selenium调用js脚本进行操作。在playwright中也有类似的方法,使用page.evaluate()执行JavaScript脚本。page.evaluate()和page.evaluate_handle()之间的......
  • 使用Redis执行多个命令
    单个命令执行packagemainimport("context""fmt""github.com/go-redis/redis/v8""time")funcmain(){//创建Redis客户端rdb:=redis.NewClient(&redis.Options{Addr:"localhos......