Flink运行时架构

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模式

standalone.png

 

yarn模式

yarn.png

 

任务调度原理

任务调度原理.png

taskmanager和slots

taskmanager和slots.png

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

程序和数据流(DataFlow)

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

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

执行图

执行图.png

 

并行(parallelism)

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

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

并行度.png

 

并行度2.png

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

任务链.png

任务链合并图.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值