架构
JobManager是老大,TaskManager是干活的。
一个作业一个jobMaster,通过分发器来启动。
TaskManager包含若干个task slots。
slot是资源调度最小单位,其数量限制了TaskManager能够并行处理的任务数量。
并行度、子任务
一个流程序的并行度,可以认为是其所有算子中最大的并行度。
设置优先级:算子 > env > 提交命令 > flink.conf
算子链
当不发生重分区时,算子是可以合并成算子链的。
可以手动解开,在排查问题的时候用到。
任务槽(Task Slots)
线程
taskmanager.numberOfTaskSlots
内存完全隔离,cpu不隔离
建议slot数量配置为机器的cpu核心数,避免不同任务cpu竞争
同一个作业中,不同算子的子任务,可以在同一个slot上同时执行。前提是属于同一个slot共享组,默认都是“default”。算子.slotSharingGroup("组名")
任务槽和并行度
任务槽:静态,最大的并发上限
并发度:动态,实际使用的并发
slot任务槽数量 >= 并发度,job才能运行
注意:yarn模式,动态会申请TM