Flink术语

server/2025/3/16 13:44:33/
Flink Application:
一个完整的Flink程序代码叫做一个Flink Application,其始于一个或多个Source,终于一个或多个Sink,中间由一个或者多个Operator(算子)组合对数据进行转换形成Transformation。
编写Flink代码要符合一定的流程,首先我们需要创建Flink的执行环境(Execution Environment),
然后再加载数据源Source,对加载的数据进行Transformation转换,进而对结果Sink输出,最后还
要执行env.execute()来触发整个Flink程序的执行,编写代码时将以上完整流程放在main方法中形成 一个完整的Application。
Flink Job:
一个Flink Application中可以有多个Flink Job,每次调用execute()或者executeAsyc()方法可以触 发一个Flink Job
execute():该方法为阻塞方法,当一个Flink Application中执行多次execute()方法触发多个 job时,下一个job的执行会被推迟到该job执行完成后再执行。
executeAsyc():该方法为非阻塞方法,一旦调用该方法触发job后,后续还有job也会立即提交执行。
Flink Application 并行度:
一个 Flink Application 的并行度 通常认为是所有Operator中最大的那个并行度 。
算子链:
Flink中算子之间的数据流向是one-to-one,算子的并行度也一样。那么这些算子可以合并成一个算子链。
Task & SubTask:
Flink中一个Task对应的是一个算子或者多个算子逻辑(算子链)。
Task会按照并行度划分成多个Subtask,每个Subtask由一个Thread线程 执行。
Flink任务调度的基本单元:Subtask
StreamGraph & JobGraph & ExecutionGraph:
Flink Application 提交后在 客户端 转换成StreamGraph(任务流图)
StreamGraph是没有经过任何优化的流图,展示的是程序整体执行的流程。StreamGraph进而会按照默认的Operator Chains算子链合规则转换成JobGraph(作业图),在JobGraph中会将并行度相同且数据流转关系为One-to-one关系的算子合并在一起由一个Task进行处理。
JobGraph会被提交给 JobManager ,最终由JobManager中JobMaster转换成ExecutionGraph(执行图),ExecutionGraph中会按照每个算子并行度来划分对应的Subtask,每个Subtask最终再次被转换成其他可以部署的对象发送到TaskManager上执行。
Task Slot:
Flink集群中每个TaskManager是一个JVM进程,可以在TaskManagr中执行一个或者多个线程(Subtask),为了能控制一个TaskManager中接收多少个SubTask,TaskManager节点上提供了 TaskSlot(任务槽)。 每个TaskSlot可以运行一个或者多个S ubtask。每个JobManager上至少有一个TaskSlot。
每个taskSlot都有固定的资源,会均分TaskMananger中的内存,共享和竞争TaskManger进程的CPU。由于T askslot只会对内存进行隔离不会对CPU进行隔离,一台TaskManager Taskslot越多 意味着越多的taskslot争夺CPU资源,所以 T askslot的值设置建议和该TaskManager节点CPU core的数量保持一致
SlotSharingGroup共享组(SSG):
Flink允许同一JOB的SubTask共享同一个TaskSlot,即一个TaskSlot可以持有整个流程的SubTask。
我们在提交Flink Application 时 不再需要衡量 Flink集群中的TaskSlot个数是否满足   Flink Application总的 subtask数。而是关注Flink集群所需的TaskSlot个数与Flink Application的并行度一样
引入了SSG,Flink集群会合理分配 CPU密集型SubTask 和 非CPU密集型SubTask (source / sink)运行时占用的CPU资源
如果一个Flink 任务有多个共享组,那么该Flink任务所需的总slot个 数就是每个共享组最大并行度的总和
TaskSlot与并行度关系:
TaskSl ot是静态概念,指的是 Flink TaskManager 能够并发执行的 task 数。
并行度是动态概念,指的是 每个Flink Application实际的并发能力

http://www.ppmy.cn/server/175438.html

相关文章

Spring Boot实战:MySQL与Redis数据一致性深度解析与代码实战

Spring Boot实战:MySQL与Redis数据一致性深度解析与代码实战 一、数据一致性问题概述二、常见解决方案三、选择合适的解决方案四、总结 在Spring Boot开发中,MySQL作为关系型数据库,提供了强大的数据存储和查询能力;而Redis作为内…

基于 Verilog 的多路复用显示驱动设计与测试:实践与探索

在数字电路设计的学习与实践中,Verilog 语言作为硬件描述的有力工具,被广泛应用于各类电路设计场景。今天,我们将深入探讨如何运用 Verilog 实现多路复用显示驱动的设计与测试,这不仅能加深对 Verilog 语言的理解,还能提升数字电路设计的实践能力。 一、实验目的 本次实验…

解决PC串流至IPad Pro时由于分辨率不一致导致的黑边问题和鼠标滚轮反转问题

问题背景 今天在做 电脑串流ipad pro 的时候发现了2个问题: 1.ipadpro 接上鼠标后,滚轮上下反转,这个是苹果自己的模拟造成的问题,在设置里选择“触控板与鼠标”。 关闭“自然滚动”,就可以让鼠标滚轮正向滚动。 2. ipadpro 分…

小说文本分析工具:基于streamlit实现的文本分析

小说文本分析工具:基于streamlit实现的文本分析 主要在于使用python对小说文本中章节之间的识别与分割,通过分词以及停用词库,抽取关键词章节的词云展示,以及关键词在整个文本当中的权重网络。 import re import streamlit as s…

【SpringMVC】常用注解:@CookieValue

1.作用 用于把指定cookie名称传入控制器方法参数 2.属性 value&#xff1a;指定cookie的名称 required&#xff1a;是否必须有次cookie 3.示例 先写jsp代码 <a href"demo1/useCookieValue">绑定 cookie 的值</a> 控制器代码 RequestMapping(&qu…

贪吃蛇小游戏-简单开发版

一、需求 本项目旨在开发一个经典的贪吃蛇游戏&#xff0c;用户可以通过键盘控制蛇的移动方向&#xff0c;让蛇吃掉随机出现在游戏区域内的食物&#xff0c;每吃掉一个食物&#xff0c;蛇的身体长度就会增加&#xff0c;同时得分也会相应提高。游戏结束的条件为蛇撞到游戏区域的…

C语言零基础入门:嵌入式系统开发之旅

C语言零基础入门&#xff1a;嵌入式系统开发之旅 一、引言 嵌入式系统开发是当今科技领域中一个极具魅力和挑战性的方向。从智能家居设备到汽车电子系统&#xff0c;从智能穿戴设备到工业自动化控制&#xff0c;嵌入式系统无处不在。而C语言&#xff0c;作为嵌入式开发中最常…

HCIA复习实验拓扑详细版

一.拓扑图 二.需求 1.学校内部的HTTP客户端可以正常通过域名www.baidu.com访问到百度网络中HTTP服务器 2.学校网络内部网段基于192.168.1.0/24划分&#xff0c;PC1可以正常访问3.3.3.0/24网段&#xff0c;但是PC2不允许 3.学校内部路由使用静态路由&#xff0c;R1和R2之间两…