flink运行时架构

此文章主要描述flink的运行时架构,包括组件,提交,任务调度等

flink环境安装

https://www.cnblogs.com/linjiqin/p/12425584.html

flink运行时的组件

作业管理器(jobmanager),任务管理器(taskmanager), 资源管理器(Resource),分发器(Dispacher)

jobmanager

控制一个应用程序执行的主进程,应用程序包括:作业图,逻辑数据流图,和打包了所有类,库和其他资源的jar包

jobmanager会将jobGraph(作业图)转换成一个物理层面的数据流图,叫做执行图(Execution Graph),包含了所有可以并发执行的任务

taskmanager

真正执行的任务的,包含一定数量的插槽(slots),限制了其能够执行的任务数量

每一个taskmanager都是一个jvm进程,在独立的线程上执行一个或多个子任务,slot来控制一个taskmanager可以接受多少个task。slot主要隔离的是内存,推荐值为cpu核数

默认情况下flink允许任务共享slot

taskmanager互相执行期间可以交换数据

修改并行度

优先级由低到高:flink-conf.yaml  -> 启动时./bin/flink -p 2  -> 代码中env设置   ->  单独算子设置并行度

Resource

主要负责管理taskmanager的插槽(slots)

Dispacher

主要为应用提交提供了Rest接口,提供web ui

任务提交流程

standalone模式

Flink运行时架构

 

yarn模式

Flink运行时架构

 

任务调度原理

Flink运行时架构

taskmanager和slots

Flink运行时架构

slot个数选择,只需要考虑并行度最大的算子的并行度,即需要的最小的slot数

程序和数据流(DataFlow)

每个flink程序有source,transformation和sink组成,分别对应读取数据源,处理加工,结果数据输出

flink程序还被映射成dataflow(有向无环图),总是以一个或多个sources开始以一个多个sink结束

执行图

Flink运行时架构

 

并行(parallelism)

数据并行,任务并行,作业并行

flink中的并行度一般说的是数据并行。一个特定算子的子任务的个数被称之为其并行度,一个stream的并行度,可以认为就是其所有算子中最大的并行度。

Flink运行时架构

 

Flink运行时架构

任务链:即flink会在从streamgraph到jobgraph时会进行任务的合并:

Flink运行时架构

Flink运行时架构

相关文章:

  • 2021-11-02
  • 2021-12-21
  • 2021-04-11
  • 2021-05-05
  • 2022-01-15
  • 2022-02-21
  • 2021-06-21
猜你喜欢
  • 2021-05-10
  • 2021-12-31
  • 2021-06-27
相关资源
相似解决方案