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 没有框架下任务提交流程

2 在YARN上部署,的提交流程

这里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形成的一种执行图的概念,并不是一种数据结构

6 并行度

一个特定算子的子任务(subtask)的个数被称之为其并行度(parallelism)。

Stream在算子之间传输数据的形式可以是

  • one-to-one(forwarding)的模式
  • 也可以是redistributing的模式,具体是哪一种形式,取决于算子的种类。

区别就是算子数据是否进行重新分区

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值