Flink运行架构

Flink运行架构

    • Flink整体架构
    • 任务提交流程(yarn模式)
    • 任务调度原理
      • 各角色作用:
          • Client
          • JobManager
          • TaskManager
    • Slot划分

Flink整体架构

Flink运行架构_第1张图片
Flink运行架构_第2张图片

任务提交流程(yarn模式)

Flink运行架构_第3张图片

  1. Flink任务提交后,Client向HDFS上传Flink的Jar包和配置,
  2. 之后向Yarn ResourceManager提交任务,
  3. ResourceManager分配Container资源并通知对应的NodeManager启动ApplicationMaster,ApplicationMaster启动后加载Flink的Jar包和配置构建环境,然后启动JobManager,
  4. 之后ApplicationMaster向ResourceManager申请资源启动TaskManager,
  5. ResourceManager分配Container资源后,由ApplicationMaster通知资源所在节点的NodeManager启动TaskManager,NodeManager加载Flink的Jar包和配置构建环境并启动TaskManager,
  6. TaskManager启动后向JobManager发送心跳包,并等待JobManager向其分配任务。

任务调度原理

Flink运行架构_第4张图片

客户端不是运行时和程序执行的一部分,它用于准备并发送dataflow(JobGraph)给Master(JobManager),然后,客户端断开连接或者维持连接以等待接收计算结果。

当 Flink 集群启动后,首先会启动一个 JobManger 和一个或多个的 TaskManager。由 Client 提交任务给 JobManager,JobManager 再调度任务到各个 TaskManager 去执行,然后 TaskManager 将心跳和统计信息汇报给 JobManager。TaskManager 之间以流的形式进行数据的传输。上述三者均为独立的 JVM 进程。

各角色作用:

Client

Client 为提交 Job 的客户端,可以是运行在任何机器上(与 JobManager 环境连通即可)。提交 Job 后,Client 可以结束进程(Streaming的任务),也可以不结束并等待结果返回。

JobManager

JobManager 主要负责调度 Job 并协调 Task 做 checkpoint,从 Client 处接收到 Job 和 JAR 包等资源后,会生成优化后的执行计划,并以 Task 为单元调度到各个 TaskManager 去执行。

TaskManager

TaskManager 在启动的时候就设置好了槽位数(Slot),每个 slot 能启动一个 Task,Task 为线程。从 JobManager 处接收需要部署的 Task,部署启动后,与自己的上游建立连接,接收数据并处理。

Slot划分

Flink运行架构_第5张图片

你可能感兴趣的:(flink,flink,运行架构)