上传网站流程,wordpress浮动关注我们,阜城网站建设代理,免费图片素材高清任务槽
每个 worker#xff08;TaskManager#xff09;都是一个 JVM 进程#xff0c;可以在单独的线程中执行一个或多个 subtask。为了控制一个 TaskManager 中接受多少个 task#xff0c;就有了所谓的 task slots#xff08;至少一个#xff09;。
每个任务槽#xf…任务槽
每个 workerTaskManager都是一个 JVM 进程可以在单独的线程中执行一个或多个 subtask。为了控制一个 TaskManager 中接受多少个 task就有了所谓的 task slots至少一个。
每个任务槽task slot其实表示了TaskManager拥有计算资源的一个固定大小的子集。这些资源就是用来独立执行一个子任务的
任务槽数量的设置
flink-conf.yaml 可以设置TaskManager的slot数量默认是1个slot。
taskmanager.numberOfTaskSlots: 8任务对任务槽的共享
默认情况下Flink 允许 subtask 共享 slot即便它们是不同的 task 的 subtask只要是来自于同一作业即可。结果就是一个 slot 可以持有整个作业管道。允许 slot 共享有两个主要优点
Flink 集群所需的 task slot 和作业中使用的最大并行度恰好一样。无需计算程序总共包含多少个 task具有不同并行度。容易获得更好的资源利用。如果没有 slot 共享非密集 subtasksource/map()将阻塞和密集型 subtaskwindow 一样多的资源。通过 slot 共享我们示例中的基本并行度从 2 增加到 6可以充分利用分配的资源同时确保繁重的 subtask 在 TaskManager 之间公平分配。 手动设置“slot 共享组”
如果希望某个算子对应的任务完全独占一个slot或者只有某一部分算子共享slot我们也可以通过设置“slot共享组”手动指定
.map(word - Tuple2.of(word, 1L)).slotSharingGroup(1);这样只有属于同一个slot共享组的子任务才会开启slot共享不同组之间的任务是完全隔离的必须分配到不同的slot上。在这种场景下总共需要的slot数量就是各个slot共享组最大并行度的总和。
任务槽与并行度的关系
整个流处理程序的并行度就应该是所有算子并行度中最大的那个这代表了运行程序需要的slot数量。