flink on yarn工作提交流程

示意图

flink on yarn工作提交流程及三层图概述
流程如下:

  • Client向Dispatch而发起请求,Dispatch而向yarn提交job
  • Yarn的NN创建一个container,启动Application Master(AM)
    • ApplicationMaster在本地启动一个Resource Manager和Job Manager
  • Job manager根据StreamGraph生成的ExecutionGraphy以及物理执行计划向Flink Resource Manager申请slot
  • 如果没有足够的slot,那么Flink Resources Manager向Yarn Resource Manager申请Container
  • 创建Container之后,Container向Flink Resource Manager和JobManager注册
  • 注册之后Flink Resource manager分配slot,JobManager分配Task

几点分工注意:

  1. 集群资源掌控在yarn的老大NN中,但是flink的client不直接和yarn的NN打交道,而是通过Application Master(AM)中的Resources Manager获取资源
  2. AM中的Resource Manager(RM)负责向yarn申请资源(Container),分配slot
  3. Job Manager向RM申请资源,分配task,并负责这些资源的管理

flink三层图概述

上面提到了这样一句话“Job manager根据Graph生成的ExecutionGraphy以及物理执行计划”,这涉及flink的三层图结构。

  • 示意图如下

  • 一个flink的DAG生成计算图大致经历一下三个过程:

    • StreamGraph :逻辑层面的计算拓扑结构
      • 按照用户代码的执行顺序向 StreamExecutionEnvironment 添加 StreamTransformation 构成流式图。
    • JobGraph :经过部分吃屎和和优化处理的任务图
      • JobGraph 从 StreamGraph 生成,将可以串联合并的节点进行合并,设置节点之间的边,安排资源共享 slot 槽位和放置相关联的节点,上传任务所需的文件,设置检查点配置等
    • ExecutionGraph :包含了任务具体执行内容的、最贴近底层实现的执行图。

相关文章: