-
每个运行中的application至少有一个taskmanager(JVM进程)。
-
每个taskmanager至少有一个task-slot,多个task-slot的话则均分taskmanager的内存资源。
-
一个task-slot中可以运行一到多个task,一个task-slot中可能会有一条完整的operator pipeline(就是从头到尾所有的operator过程的一套流程).
-
一个task执行的是一到多个operator,多个operator是靠可配置的operator chains(即多个operator连接起来)来实现的。
-
operator chains可作为一种优化,可以减少线对线交接和缓冲的开销,并增加了整体吞吐量,同时减少了延迟。
-
同一个JVM(taskmanager)中的任务共享TCP连接(通过多路复用)和心跳消息。它们还可以共享数据集和数据结构,从而减少每个任务的开销。
-
每个slot中可以有多个线程,根据其中的task数量决定(每个task都由一个线程来执行).
-
整个运行中的application拥有的task-slot数量决定的是任意一个task的subtask数量上限(即operator的并行度).
-
可以给task(operator or operator chains)设置slot group、给operator设置operator chains.