【Flink】【第四章 Flink理论部分】 任务提交 & 任务调度

任务提交流程

在这里插入图片描述

Yarn Per Job 模式

在这里插入图片描述

  • PerJob模式下,job是直接提交给Yarn ResourceManager的 ;
  • Session模式下,Job提交给JobManager,因为Yarn-session启动后,JobManager就已经申请好了

具体流程:
1.flink任务提交后,Client向HDFS上传Flink的Jar包和配置
其他TaskManager节点也需要这些资源,从HDFS上获取,免分发;任务提交后,本地的jar包删除不影响job的运行

2.向Yarn ResourceManager提交任务,ResourceManager分配Container资源并通知对应的NodeManager启动ApplicationMaster

3.ApplicationMaster启动后加载Flink的Jar包和配置构建环境,然后启动JobManager和flink的ResourceManager

4.ApplicationMaster中flink-ResourceManager向yarn-ResourceManager申请container用于启动TaskManager

5.ResourceManager分配Container资源后,由ApplicationMaster通知资源所在节点的NodeManager启动TaskManager,NodeManager加载Flink的Jar包和配置构建环境并启动TaskManager,TaskManager启动后向JobManager发送心跳包,并等待JobManager向其分配任务。

在这里插入图片描述

Yarn-session 模式

Yarn-session模式下,启动yarn-session的时候就启动了AppMaster,AppMaster中封装了Dispatcher、JobMnager、ResourceManager

  1. client向Dispatcher提交Job
  2. Dispatrcher启动JobManager,并向JobManager提交应用
  3. JobManager向RM申请slots
  4. 后面的就和perJob是一样的了
    在这里插入图片描述
    PerJob和Session模式的核心区别就在于session模式在启动yarn-session的时候就启动好了AppMaster,并封装好了

任务调度原理

在这里插入图片描述

  • 客户端不是运行时和程序执行的一部分,但它用于准备并发送dataflow(JobGraph)给Master(JobManager),然后,客户端断开连接或者维持连接以等待接收计算结果。
  • 当 Flink 集群启动后,首先会启动一个 JobManger 和一个或多个的 TaskManager。由 Client 提交任务给 JobManager,JobManager 再调度任务到各个 TaskManager 去执行,然后 TaskManager 将心跳和统计信息汇报给 JobManager。TaskManager 之间以流的形式进行数据的传输。上述三者均为独立的 JVM 进程。
  • Client 为提交 Job 的客户端,可以是运行在任何机器上(与 JobManager 环境连通即可)。提交 Job 后,Client 可以结束进程(Streaming的任务),也可以不结束并等待结果返回。
  • JobManager 主要负责调度 Job 并协调 Task 做 checkpoint,职责上很像 Storm 的 Nimbus。从 Client 处接收到 Job 和 JAR 包等资源后,会生成优化后的执行计划,并以 Task 的单元调度到各个 TaskManager 去执行。
  • TaskManager 在启动的时候就设置好了槽位数(Slot),每个 slot 能启动一个 Task,Task 为线程。从 JobManager 处接收需要部署的 Task,部署启动后,与自己的上游建立 Netty 连接,接收数据并处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值