美文网首页
Flink(4)运行时架构

Flink(4)运行时架构

作者: hk_faith | 来源:发表于2021-03-07 16:03 被阅读0次

Flink 运行时的组建

  • 作业管理器: JobManager
  • 任务管理器: TaskManager
  • 资源管理器:ResourceManager
  • 分发器:Dispacher

作业管理器(JobManager)

  • 控制一个应用程序执行的主进程,也就是说,每个应用程序都会被不同的JobManager所控制
  • jobManager 会先接受到要执行的应用程序,这个应用程序会包括:作业图(JobGraph),逻辑数据图(logical dataflow graph)和打包了所有的类库和其他资源的JAR包。
  • JobManager 会向资源管理器请求执行任务必要的资源,也就是任务管理器上的插槽(slot),一旦他获得足够的资源,就会将执行图分发到真正运行他们的TaskManager上,而运行过程中,jobManager会负责所需要的中央协调的操纵,比如说检查点(checkpoints)协调。

任务管理器 (TaskManager)

  • Flink 的工作进程。通常在Flink中会有多个TaskManager 运行,每个TaskManager会包含一定数量的插槽(slots).插槽的数量限制了TaskManager能够执行的数量。
  • 启动后,TaskManager会向资源管理器注册他的插槽,收到资源管理的指令后,TaskManager 就会将一个或者多个插槽提供给JobManager调用,JobManager就可以向插槽分配任务(tasks)来执行了。
  • 在执行中,一个taskManager 可以跟其他运行同一个应用程序的TaskManager 交换数据。

资源管理(ResourceManager)

  • 主要负责管理 ,任务管理器的插槽(slot),TaskManager插槽是Flink中定义的处理资源单元。
  • Flink 为不同的环境和资源管理工具提供了不同的资源管理器,比如 YARN,K8s,以及 Standalone部署。

分发起(Dispatcher)

  • 可以跨作业运行,他为应用提供了REST接口,
  • 当一个应用被提交执行的时候,他就会启动并将应用移交给一个JobManager.
  • 他会启动一个 Web UI,方便展示信息

任务提交流程

任务提交流程.png

任务提交流程 (Yarn)

任务提交流程(Yarn).png

任务提交原理

任务调度原理.png

并行度

一个特定算子的子任务的个数被称为其并行度。一般情况下,
一个stream的并行度,可认为就是其所有算子中最大的并行度


并行度.png

TaskManager 和 Slots

  • Flink 中每个TaskManager 都是JVM进程,
    它可能会在独立的线程上执行一个或多个子任务
  • 为了控制一个TaskManager 能接受多少个Task,TaskManager通过
    task slot 来进行控制(一个TaskManager 至少有一个slot)
    taskManager和slot.png
    TaskManager和slot(2).png
    设置 slot 共享组
.slotSharingGroup("red")

结果: 默认的共享组是"default",设置不同的共享组后,整个计算任务会 ,比之前会占多个slot

例如:


并行子任务的分配.png

flink 子任务的分配

flink子任务分配.png
flink子任务分配2.png

flink 的执行步骤图

flink执行步骤图.png

数据传输形式

一个程序中,不同的算子可能具有不同的并行度
算子之间的传输数据的形式可以是 one-to-one (forwarding)的模式
也可以是 redistributing的模式,具体是哪一种形式,取决于算子的种类

one-to-one :

stream维护着分区以及元素的顺序(比如source 和map),着意味着map
算子的子任务生产的元素的个数以及顺序跟source算子的子任务生产的元素的个数 ,顺序相同。
map,fliter,flatMap 等算子都是 one-to-one的对应关系

redistributing:

stream的分区会发生改变。,每个算子的子任务依据所选择的transformation
发送数据到不同的目标任务。例如,keyBy基于hashCode 重分区,而broadcast 和 rebalance
会随机重新分区。这些算子都会引起redistribute过程,而redistribute过程
就类似于spark中的shuffle过程。

任务链

任务链0.png
任务链.png

相关文章

  • 09-flink运行时架构流程

    一、flink运行时架构图https://ci.apache.org/projects/flink/flink-d...

  • Flink相关文章索引(1)

    基本常识 Flink运行时之统一的数据交换对象 算法架构 Flink 原理与实现:内存管理 Flink运行时之Ta...

  • Flink(4)运行时架构

    Flink 运行时的组建 作业管理器: JobManager 任务管理器: TaskManager 资源管理器:R...

  • Apache Flink——运行时架构

    一、Flink运行时组件 Flink 的运行时架构中,最重要的就是两大组件:作业管理器(JobManger)和任务...

  • Flink学习笔记之一Flink Runtime

    一.Flink Runtime 1.运行时架构 Client JobManager(master节点) TaskM...

  • Flink 架构

    1.Flink 运行时的角色 Flink系统架构中包含了两个角色,分别是JobManager和TaskManage...

  • Flink 运行组件

    Flink运行时的组件 Flink 运行时架构主要包括四个不同的组件,它们会在运行流处理应用程序时协同工作:作业管...

  • Flink(1.13) 的运行架构

    架构图 官网原图: Flink 运行时至少包含两个进程:1个JobManager和至少1个TaskManager。...

  • flink大纲知识

    flink集群部署flink反压flink拓扑架构flink的内存管理

  • Flink架构:runtime核心机制

    1. Flink Runtime 整体架构 Flink 的整体架构如图 1 所示。Flink 是可以运行在多种不同...

网友评论

      本文标题:Flink(4)运行时架构

      本文链接:https://www.haomeiwen.com/subject/kmoofltx.html