做网页的素材,衡阳网站优化方案,网页视频下载快捷键,互联网品牌的快速推广4.1 系统架构
Flink运行时架构 Flink 运行时由两种类型的进程组成#xff1a;一个 JobManager 和一个或者多个 TaskManager。
1、作业管理器#xff08;JobManager#xff09;
JobManager是一个Flink集群中任务管理和调度的核心#xff0c;是控制应用执行的主进程。也就…4.1 系统架构
Flink运行时架构 Flink 运行时由两种类型的进程组成一个 JobManager 和一个或者多个 TaskManager。
1、作业管理器JobManager
JobManager是一个Flink集群中任务管理和调度的核心是控制应用执行的主进程。也就是说每个应用都应该被唯一的JobManager所控制执行。尽管在HA模式下一个应用可以配置多个JobManager但是实际运行中同一时刻只有一个在使用。
JobManager包含3个不同的组件
JobMasterResourceManagerDispatcher
1JobMaster JobMaster是JobManager中最核心的组件负责处理单独的作业Job。所以JobMaster和具体的Job是一一对应的多个Job可以同时运行在一个Flink集群中, 每个Job都有一个自己的JobMaster。 JobMaster会把JobGraph转换成一个物理层面的数据流图这个图被叫作“执行图”ExecutionGraph它包含了所有可以并发执行的任务。JobMaster会向资源管理器ResourceManager发出请求申请执行任务必要的资源。一旦它获取到了足够的资源就会将执行图分发到真正运行它们的TaskManager上。 而在运行过程中JobMaster会负责所有需要中央协调的操作比如说检查点checkpoints的协调。 2ResourceManager ResourceManager主要负责资源的分配和管理在Flink 集群中只有一个。所谓“资源”主要是指TaskManager的任务槽task slots。任务槽就是Flink集群中的资源调配单元包含了机器用来执行计算的一组CPU和内存资源。每一个任务Task都需要分配到一个slot上执行。 这里注意要把Flink内置的ResourceManager和其他资源管理平台比如YARN的ResourceManager区分开。 3Dispatcher 提供提交应用的接口并且为每一个提交的作业启动一个JobMaster。Dispatcher也会启动一个Web UI用来方便地展示和监控作业执行的信息。Dispatcher在架构中并不是必需的在不同的部署模式下可能会被忽略掉 2、任务管理器TaskManager TaskManager是Flink中的工作进程数据流的具体计算就是它来做的。Flink集群中必须至少有一个TaskManager每一个TaskManager都包含了一定数量的任务槽task slots。Slot是资源调度的最小单位slot的数量限制了TaskManager能够并行处理的任务数量。 启动之后TaskManager会向资源管理器注册它的slots收到资源管理器的指令后TaskManager就会将一个或者多个槽位提供给JobMaster调用JobMaster就可以分配任务来执行了。 在执行过程中TaskManager可以缓冲数据还可以跟其他运行同一应用的TaskManager交换数据。 Client 不是运行时和程序执行的一部分而是用于准备数据流并将其发送给 JobManager。之后客户端可以断开连接分离模式或保持连接来接收进程报告附加模式4.2 核心概念
1、数据并行和任务并行 大量数据往往是需要并行来提高吞吐量、处理效率和更好的利用集群资源可以通过两种并行方式实现数据并行和任务并行。 数据并行将输入数据分组将同一操作算子的多个任务来并行执行在不同的数据子集上。
任务并行不同算子同时执行
2、并行度
1并行子任务和并行度 **并行子任务**在数据并行中我们需要将同一算子“复制”多份到多个节点数据来了之后就可以到其中任意一个执行。这样一来一个算子任务就被拆分成了多个并行的“子任务”subtasks再将它们分发到不同节点就真正实现了并行计算。这些子任务在不同的线程、不同的物理机或不同的容器中完全独立地执行。
**并行度**一个算子的子任务数。不同算子可以有不同的并行度。
2并行度的设置 代码中设置 算子后面调用setParallelism()方法 提交应用时设置 bin/flink run –p 并行度 -c com.xxx.xxx xxx.jar配置文件中设置 flink-conf.yaml parallelism.default: 2优先级代码命令行配置
4.3 作业提交流程
1、Standalone会话模式作业提交流程
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hf6dyI0v-1693058508447)(https://drawing-bed-zlin.oss-cn-shenzhen.aliyuncs.com/img/202308262200798.png)]
2、逻辑流图、作业图、执行图、物理流图
逻辑流图StreamGraph→ 作业图JobGraph→ 执行图ExecutionGraph→ 物理图Physical Graph。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yB1HPwjd-1693058508447)(https://drawing-bed-zlin.oss-cn-shenzhen.aliyuncs.com/img/202308262200024.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-U23tcMGv-1693058508448)(第四章 Flink架构.assets/image-20230715095418312.png)]
1逻辑流图Stream Graph
这是根据用户通过 DataStream API编写的代码生成的最初的DAG图用来表示程序的拓扑结构。这一步一般在客户端完成。
2作业图JobGraph
StreamGraph经过优化后生成的就是作业图JobGraph这是提交给 JobManager 的数据结构确定了当前作业中所有任务的划分。主要的优化为将多个符合条件的节点链接在一起合并成一个任务节点形成算子链这样可以减少数据交换的消耗。JobGraph一般也是在客户端生成的在作业提交时传递给JobMaster。
我们提交作业之后打开Flink自带的Web UI点击作业就能看到对应的作业图 3执行图ExecutionGraph
JobMaster收到JobGraph后会根据它来生成执行图ExecutionGraph。ExecutionGraph是JobGraph的并行化版本是调度层最核心的数据结构。与JobGraph最大的区别就是按照并行度对并行子任务进行了拆分并明确了任务间数据传输的方式。
4物理图Physical Graph
JobMaster生成执行图后会将它分发给TaskManager各个TaskManager会根据执行图部署任务最终的物理执行过程也会形成一张“图”一般就叫作物理图Physical Graph。这只是具体执行层面的图并不是一个具体的数据结构。
物理图主要就是在执行图的基础上进一步确定数据存放的位置和收发的具体方式。有了物理图TaskManager就可以对传递来的数据进行处理计算了。
3、Yarn应用模式作业提交流程