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时指定的 > 配置文件默认的