张国伟 发表于 2024-10-4 10:01:13

Flink学习条记----运行架构

1 组件



[*]作业管理器(JobManager)、
[*]资源管理器(ResourceManager)、
[*]任务管理器(TaskManager)
[*]分发器(Dispatcher)
2 YARN 两种模式

1Session-cluster 模式
Session-Cluster模式必要先启动集群,然后再提交作业,接着会向yarn申请一块空间后,资源永久保持不变。如果资源满了,下一个作业就无法提交,只能比及yarn中的其中一个作业执行完成后,释放了资源,下个作业才会正常提交。所有作业共享Dispatcher和ResourceManager;共享资源;得当规模小执行时间短的作业。
在yarn中初始化一个flink集群,开辟指定的资源,以后提交任务都向这里提交。这个flink集群会常驻在yarn集群中,除非手工克制。
2Per-Job-Cluster 模式
一个Job会对应一个集群,每提交一个作业会根据自身的情况,都会单独向yarn申请资源,直到作业执行完成,一个作业的失败与否并不会影响下一个作业的正常提交和运行。独享Dispatcher和ResourceManager,按需接受资源申请;得当规模大长时间运行的作业。
每次提交都会创建一个新的flink集群,任务之间相互独立,互不影响,方便管理。任务执行完成之后创建的集群也会消失。
3 四个运行时架构组件

1作业管理器(JobManager)

控制一个应用程序执行的主进程,也就是说,每个应用程序都会被一个差别的JobManager所控制执行。
1 会接收应用程序包:作业图(JobGraph)、逻辑数据流图(logical dataflow graph)和打包了所有的类、库和其它资源的JAR包
2 把任务作业图JobGraph转换成物理层面的数据流图,所有可以并发执行的任务
3 想资源管理器请求任务须要的资源,
4 将执行图上的任务分配到对应的TaskManager上进行任务的和谐
2 资源管理器

重要负责管理任务管理器(TaskManager)的插槽(slot),TaskManger插槽是Flink中定义的处理资源单位
1 面临JobManager的资源申请,将空闲的资源SLOT进行分配,不够可以启动TaskManager,进行资源的动态调解。
3 任务管理器

通常在Flink中会有多个TaskManager运行,每一个TaskManager都包含了一定数量的插槽(slots)
1 启动会向RS注册自己的SLOT
2 当JobManager获得资源申请时候,会把自己的SLOT资源提供给JOBM使用(分配任务)
4 分发器(Dispatcher)

将提交的应用移交给一个JobManager,也会启动一个WebUI,表现作业执行的信息
4任务提交换程

1 没有框架下任务提交换程

https://i-blog.csdnimg.cn/blog_migrate/6e98a45cb7f566764feb9f917e6be9fc.png
2 在YARN上摆设,的提交换程

https://i-blog.csdnimg.cn/blog_migrate/3077ec1098908cc4957f43ce02a3063e.png
这里RS是在yarn上的RS,然而JobManager是在一台NodeManager上的AM里面
流程简述
1.  Flink任务提交后,Client向HDFS上传Flink的Jar包和配置
2.  向Yarn ResourceManager提交任务,ResourceManager分配Container资源
3.  关照对应的NodeManager启动ApplicationMaster,ApplicationMaster启动后加载Flink的Jar包和配置构建环境,然后启动JobManager
4.  ApplicationMaster向ResourceManager申请资源启动TaskManager
5.  ResourceManager分配Container资源后,由ApplicationMaster关照资源所在节点的NodeManager启动TaskManager
6.  NodeManager加载Flink的Jar包和配置构建环境并启动TaskManager
7.  TaskManager启动后向JobManager发送心跳包,并等候JobManager向其分配任务。
 TaskManager 将心跳和统计信息汇报给 JobManager。TaskManager 之间以流的情势进行数据的传输
worker(TaskManager)都是一个JVM进程,其下面的SLOT任务共享JVM内存,淘汰task负载
Task Slot是静态的概念,是指TaskManager具有的并发执行本领,可以通过参数taskmanager.numberOfTaskSlots进行配置;而并行度parallelism是动态概念,即TaskManager运行程序时实际使用的并发本领,可以通过参数parallelism.default进行配置。
5 执行图

Task Slot是静态的概念,是指TaskManager具有的并发执行本领,可以通过参数taskmanager.numberOfTaskSlots进行配置;而并行度parallelism是动态概念,即TaskManager运行程序时实际使用的并发本领,可以通过参数parallelism.default进行配置。
StreamGraph -> JobGraph-> ExecutionGraph -> 物理执行图。
数据流图,工作图,执行图,物理执行图
1 JobGraph是优化数据流图,(将多个可以连结的节点连在一起,淘汰数据的序列化操作的斲丧)
2 ExecutionGraph :是JobGraph的并行化版本,是调度层最核心的数据结构。
3 物理执行图: 是JOB进行调度后,在TaskManager形成的一种执行图的概念,并不是一种数据结构
https://i-blog.csdnimg.cn/blog_migrate/56bf44e2673e6d029b53c6a86865caf0.png
6 并行度

一个特定算子的子任务(subtask)的个数被称之为其并行度(parallelism)。
Stream在算子之间传输数据的情势可以是


[*]one-to-one(forwarding)的模式
[*]也可以是redistributing的模式,详细是哪一种情势,取决于算子的种类。
区别就是算子数据是否进行重新分区

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Flink学习条记----运行架构