当前位置:网站首页>Apache Flink 的 YARN Session 提交流程
Apache Flink 的 YARN Session 提交流程
2022-07-20 04:13:00 【Shockang】
前言
本文隶属于专栏《大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!
本专栏目录结构和参考文献请见大数据技术体系
目录
Apache Flink 的 YARN Session 提交流程
Apache Flink 的 K8s Session 提交流程
正文
从总体上来说,在 Yarn 集群上使用 Session 模式提交 Flink 作业的过程分为 3 个阶段:
- 首先在 Yarn 上启动 Flink Session 模式的集群;
- 其次通过 Flink Client 提交作业;
- 最后进行作业调度执行。
完整流程如下所示:
1. 启动集群
- 使用
bin/yarn-session.sh
提交会话模式的作业
- 如果提交到已经存在的集群,则获取 Yarn 集群信息、应用 ID,并准备提交作业。
- 如果是启动新的 Yarn Session 集群,则进入到步骤(2)。
- Yarn 启动新 Flink 集群
- 如果没有集群,则创建一个新的 Session 模式的集群。
首先将应用配置(flink-conf.yaml
、logback.xml
、log4j.properties
)和相关文件( Flink Jar、配置类文件、用户Jar文件、 JobGraph 对象等)上传至分布式存储(如HDFS)的应用暂存目录。
- 通过 Yarn Client 向 Yarn 提交 Flink 创建集群的申请,Yarn 分配资源,在申请的 Yarn Container 中初始化并启动 Flink
JobManager
进程,在JobManager
进程中运行YarnSessionClusterEntrypoint
作为集群启动的入口(不同的集群部署模式有不同的ClusterEntrypoint
实现), 初始化Dispatcher
、ResourceManager
,启动相关的 RPC 服务,等待 Client 通过 Rest 接口提交作业。
2. 作业提交
Yarn 集群准备好后,开始作业提交。
Flink Client 通过 Rest 向
Dispatcher
提交JobGraph
。Dispatcher
是 Rest 接口,不负责实际的调度、执行方面的工作,当收到JobGraph
后,为作业创建一个JobMaster
,将工作交给JobMaster
(负责作业调度、管理作业和 Task 的生命周期),构建ExecutionGraph
(JobGraph
的并行化版本,调度层最核心的数据结构)。
这两个步骤结束后,作业进入调度执行阶段。
3 .作业调度执行
JobMaster
向YarnResourceManager
申请资源,开始调度ExeeutionGraph
执行,向YarnResourceManager
申请资源;初次提交作业集群中尚没有TaskManager
,此时资源不足,开始申请资源。YarnResourceManager
收到JobMaster
的资源请求,如果当前有空闲 Slot 则将 Slot 分配给JobMaster
,否则YarnResourceManager
将向YarnMaster
请求创建TaskManager
。YarnResourceManager
将资源请求加入等待请求队列,并通过心跳向 YARNResourceManager
申请新的Container
资源来启动TaskManager
进程; Yarn 分配新的 Container 给TaskManager
YarnResourceManager
启动,然后从 HDFS 加载 Jar 文件等所需的相关资源,在容器中启动TaskManager
。TaskManager
启动之后,向ResourceManager
注册,并把自己的 Slot 资源情况汇报给 ResourceManager 。ResourceManager
从等待队列中取出 Slot 请求,向TaskManager
确认资源可用情况,并告知TaskManager
将 Slot 分配给了哪个JobMaster
。TaskManager
向JobMaster
提供 Slot ,JobMaster
调度 Task 到TaskManager
的此 Slot 上执行。
至此作业进入执行阶段。
边栏推荐
猜你喜欢
ECS和云数据库管理
动态内存管理
Explain fcos: full revolutionary one stage object detection in detail
Protocol details of network principles
结构体完结(柔性数组)
Machine learning notes: Elmo Bert
Excel管理Simulink SWC中的标定量与观测量之标定量
解决梯度爆炸和梯度消失
Exness: the dollar fell moderately, and the RBA called for further interest rate hikes
精确率和召回率 与 置信度之间的关系
随机推荐
MySQL 字段值里包含_和\转义符,如何在比对两个表的值时消除影响?
Ppt concise
Exness: the dollar fell moderately, and the RBA called for further interest rate hikes
Caffeine缓存增改查过期
详解激活函数
Calculation of parameter quantity (param) and floating point calculation quantity (flops) in the network
详解决策树与随机森林
Leetcode sword finger offer 26 Substructure of tree
Int type changed to double
The difference between voice message and voice notification in okcc call center
图解LeetCode——731. 我的日程安排表 II(难度:中等)
目标检测的进阶-one stage
647. Palindrome substring [double pointer: two symmetrical cases palindrome string] (number of palindrome substrings in string s)
When does the index expire
Use DOS command to generate directory file tree
Locking is familiar with synchronized and lock, so what is the difference between them
精确率和召回率 与 置信度之间的关系
Redis application
RESNET knowledge points supplement
ar数字展厅互动设计的功能及优势