05-Flink 运行时架构

JobManager

协调和申请slot,分配task任务

TaskManager

执行Execution Grah

Flink中每一个TaskManager都是一个JVM进程,它可能会在独立的线程上执行一个或多个子任务

为了控制一个TaskManager能接收多少个task,TaskManager通过task slot来进行控制(一个tm至少一个slot)

每个线程都需要分配一个slot,在slot里执行任务和分配资源

任务可能存在合并

taskmanager.numberOfTaskSlots:每个tm里最多多少个slot(最大并行能力)
parallelism.default: 程序运行时默认的并行能力

ResourceManager

管理slot资源,yarn资源平台等

Dispatcher(分发器):

web ui,接口等

Slots

默认情况下,Flink允许子任务共享slot,即使他们是不同任务的子任务,这样的结果是,一个slot可以保存作业的整个管道

Task slot是静态的概念,是指TaskManager具有的并发执行能力

 

怎样进行并行计算?

设置不同的并行度,分配到不同的slot上,多线程执行

并行度Parallelism是什么?

一个特定算子的子任务(subtask)的个数被称之为其并行度

一般情况下,一个stream的并行度,可以认为其所有算子中的最大并行度

 

 

并行的任务,需要占用多少slot?

一个流处理程序,到底包含多少个任务?

实际运行时算子的并行度优先级:算子设置的 > env设置的 > 提交job时指定的 > 配置文件默认的

 

posted @ 2021-12-26 10:15  鼠标的博客  阅读(57)  评论(0编辑  收藏  举报