Flink On Yarn中Yarn Session 模式提交流程是什么?

提问者:帅平 问题分类:面试刷题
Flink On Yarn中Yarn Session 模式提交流程是什么?
4 个回答
美到拖网速
美到拖网速
在 Yarn 集群上使用 Session 模式提交 Flink 作业的过程分为 3 个阶段。首先在 Yarn 上启动 Flink Session 模式的集群;其次通过 Flink Client 提交作业 ,最后进行作业的调度执行.
发布于:3个月前 (02-06) IP属地:四川省
孑身一人
孑身一人
第三阶段:作业调度执行
1、JobMaster 向 YarnResourceManager 申请资源,开始调度 ExecutionGraph 执行,向  YarnResourceManager 申请资源;初次提交作业集群中尚没有 TaskManager, 此时资源不足,开始申请资源.
2、YarnResourceManager 收到 JobManager 的资源请求,如果当前有空闲 Slot 则将 Slot 分配给 JobMaster.,否则 YarnResourceManager 将向 YarnMaster 请求创建 TaskManager.
3、YarnResourceManager 将资源请求加入到等待请求队列,并通过心跳向 Yarn RM 申请新的 Container 资源来启动 TaskManager 进程,Yarn 分配新的 Container 给 TaskManager.
4、YarnResourceManager 启动,然后从 HDFS 加载 Jar 文件等所需要的的相关资源,在容器中启动 TaskManager.
5、TaskManager 启动之后,向 ResourceManager 注册,并把自己的 Slot 资源情况汇报给 ResouceManager.
6、ResourceManager 从等待队列中取出 Slot 请求,向 TaskManager 确认资源可用情况,并告知 TaskManager 将 Slot 分配给哪个 JobMaster.
7、TaskManager 向 JobMaster 提供 Slot,JobMaster 调度 Task 到 TaskManager 的此 Slot 上执行.
发布于:3个月前 (02-06) IP属地:四川省
吹南风
吹南风
第二阶段:作业提交
1、Flink Client 通过 Rest 接口向 Dispatcher 服务提交 JobGraph. 
2、Dispatcher 服务不负责实际的调度、执行方面的工作,当收到 JobGraph 后,为作业创建一个 JobMaster,将工作交给 JobManager(负责作业调度、管理作业和 Task 的生命周期),构建 ExecutionGraph(JobGraph 的并行化版本,调度层最核心的数据结构).
发布于:3个月前 (02-06) IP属地:四川省
我是白云
我是白云
第一阶段:提交集群
1、使用 bin/yarn-session.sh(开辟资源) + flink run(提交任务) 提交 Session 模式的作业. 如果提交到已经存在的集群,则获取 Yarn 集群信息、应用 ID,并准备提交作业. 如果没有集群,则会先创建一个新的 Session 模式的集群. 
2、创建一个新的 Session 模式的集群, 首先将应用配置 flink-conf.yaml、logback.xml、log4j.properties 和相关文件 Flink Jar、配置类文件、用户 Jar 文件、JobGraph 对象等上传至分布式存储(如 HDFS)的应用暂存目录. 然后通过 Yarn Client 向 Yarn 提交 Flink 创建集群的申请,接着 Yarn 分配资源,在申请的 Yarn Container 中初始化并启动 FlinkJobManager 进程, 在 JobManager 进程中运行YarnSessionClusterEntrypoint 作为集群启动入口(不同的集群部署模式有不同的 ClusterEntrypoint 实现),初始化 Dispatcher、ResourceManager,启动相关的 RPC 服务,等待 Client 通过 Rest 接口提交作业.
发布于:3个月前 (02-06) IP属地:四川省
我来回答