自己公司网站自己能做吗,wordpress数字添加链接,网站设计公司电话,自己做网站 发布视频教程文章目录 1、集群角色2、部署模式3、Flink系统架构3.1 作业管理器#xff08;JobManager#xff09;3.2 任务管理器#xff08;TaskManager#xff09; 4、独立部署会话模式下的作业提交流程5、Yarn部署的应用模式下作业提交流程 1、集群角色
Flink提交作业和执行任务JobManager3.2 任务管理器TaskManager 4、独立部署会话模式下的作业提交流程5、Yarn部署的应用模式下作业提交流程 1、集群角色
Flink提交作业和执行任务需要以下几个关键组件 客户端Client客户端的作用是获取Flink应用程序的代码并作一个转换之后提交给JobManager JobManagerFlink集群里的管事人对作业进行中央调度管理。它获取到要执行的作业后会进一步处理转换然后分发任务给众多的TaskManager TaskManager真正干活的数据的处理操作就是由TaskManager节点完成的 2、部署模式 会话模式Session Mode 先启动Flink集群保持一个会话在这个会话种通过客户端提交作业。因为集群启动时所有资源都已经确定所以所有提交的作业会竞争集群中的资源。比如下图中提交的三个Flink Application 有点类似大学入学前你在的那间宿舍已准备好开学时和你室友分床位。会话模式比较适合于单个规模小、执行时间短的大量作业。 单作业模式Per-Job Mode 上面的会话模式因为资源共享会导致很多问题为了更好的隔离资源考虑为每个提交的作业启动一个集群即单作业Per-Job模式 单作业模式提前不启动Flink集群有作业提交了再启动一个集群。现提交现启动每个作业都用的单独的集群作业完成后集群关闭所有资源释放。类似你不住宿舍了你现在住酒店去前台现开现住人走退房。单作业模式Flink无法直接自己运行需要借助一些资源管理框架来启动集群如K8S、Hadoop的YARN。 应用模式Application Mode 前面提到的两种模式下Flink应用代码都是在客户端上执行然后由客户端提交给JobManager的。但是这种方式客户端需要占用大量网络带宽去下载依赖和把二进制数据发送给JobManager加上很多情况下我们提交作业用的是同一个客户端就会加重客户端所在节点的资源消耗。 所以解决办法就是不要客户端了直接把应用提交到JobManger上运行。而这也就代表着我们需要为每一个提交的应用单独启动一个JobManager也就是创建一个集群。这个JobManager只为执行这一个应用而存在执行结束之后JoblManager也就关闭了这就是应用模式。
总结1应用模式与单作业模式都是提交作业之后才创建集群不同的时单作业模式是通过客户端来提交的客户端解析出的每一个作业对应一个集群而应用模式下是直接由JobManaget执行应用程序的。 总结2会话模式下集群生命周期独立于集群上运行的任何作业的生命周期且所有作业之间共享集群资源单作业模式下多了启动集群的代价对于每个提交的作业资源隔离性得到了保证集群生命周期和作业生命周期绑定应用模式下直接把应用提交到JobManger上运行不是在客户端上执行
最后对应这三种模式采用的部署方式可以是
独立部署Standalone独立K8S部署YARN部署
本篇只整理独立部署后两种部署方式见下篇。
3、Flink系统架构 3.1 作业管理器JobManager
JobManager是一个Flink集群中任务管理和调度的核心是控制应用执行的主进程。也就是说每个应用都应该被唯一的JobManager所控制执行。JobManger又包含3个不同的组件
分发器JobMaster资源管理器 分发器Dispatcher Dispatcher主要负责提供一个REST接口用来提交应用并且负责为每一个新提交的作业启动一个新的JobMaster 组件。Dispatcher也会启动一个Web UI用来方便地展示和监控作业执行的信息。Dispatcher在架构中并不是必需的在不同的部署模式下可能会被忽略掉。 JobMaster JobMaster是JobManager中最核心的组件负责处理单独的作业Job。所以JobMaster和具体的Job是一一对应的多个Job可以同时运行在一个Flink集群中, 但每个Job都有一个自己的JobMaster。需要注意在早期版本的Flink中没有JobMaster的概念而JobManager的概念范围较小实际指的就是现在所说的JobMaster。
在作业提交时JobMaster会先接收到要执行的应用。JobMaster会把JobGraph转换成一个物理层面的数据流图这个图被叫作“执行图”ExecutionGraph它包含了所有可以并发执行的任务。JobMaster会向资源管理器ResourceManager发出请求申请执行任务必要的资源任务插槽等。一旦它获取到了足够的资源就会将执行图分发到真正运行它们的TaskManager上。而在运行过程中JobMaster会负责所有需要中央协调的操作比如说检查点checkpoints的协调。 资源管理器ResourceManager ResourceManager主要负责资源的分配和管理在Flink 集群中只有一个。所谓资源主要是指TaskManager的任务槽task slots。任务槽就是Flink集群中的资源调配单元包含了机器用来执行计算的一组CPU和内存资源。每一个任务Task都需要分配到一个slot上执行。这里的ResourceManager是Flink内置的资源管理组件和其他资源管理平台比如YARN的ResourceManager不是一个东西。
3.2 任务管理器TaskManager
TaskManager是Flink中的工作进程数据流的具体计算就是它来做的。Flink集群中必须至少有一个TaskManager每一个TaskManager都包含了一定数量的任务槽task slots。Slot是资源调度的最小单位slot的数量限制了TaskManager能够并行处理的任务数量。 启动之后TaskManager会向资源管理器注册它的slots收到资源管理器的指令后TaskManager就会将一个或者多个槽位提供给JobMaster调用JobMaster就可以分配任务来执行了。 在执行过程中TaskManager可以缓冲数据还可以跟其他运行同一应用的TaskManager交换数据。
4、独立部署会话模式下的作业提交流程 解析参数比如我们提交作业时的-p、-c等参数然后开始逻辑流图StreamGraph→ 作业图JobGraph→ 执行图ExecutionGraph→ 物理图Physical Graph 简单来说 逻辑流图到作业流图做了一个算子链的优化减少数据交换的消耗比如上面合并算子成算子链。 作业流图到执行流图按并行度展开对并行子任务进行了拆分并明确了任务间数据传输的方式。JobMaster按照执行图去申请Slot并把一个个任务分发到TaskManager的插槽上去 JobMaster生成执行图后会将它分发给TaskManager各个TaskManager会根据执行图部署任务形成物理图。物理图主要就是在执行图的基础上进一步确定数据存放的位置和收发的具体方式。有了物理图TaskManager就可以对传递来的数据进行处理计算了。
5、Yarn部署的应用模式下作业提交流程
Application模式下去掉了客户端Yarn模式下Flink自己的资源管理器已经不管事了仅仅是一个中介JobMaster向Flink资源管理器申请slot它转发给Yarn的ResourceManager。且之前生成逻辑流图、作业流图的任务交给了JobMaster