对FLINK任务槽感到困惑

时间:2017-11-09 09:06:30

标签: java apache-flink flink-streaming

我知道任务管理器可能有几个任务槽。

但是,什么是任务槽? JVM进程或内存或线程中的对象?

4 个答案:

答案 0 :(得分:1)

答案可能来晚了。但是:

Taskmanager(TM)是JVM进程,而Taskslot(TS)是相应的JVM进程(TM)中的线程。 TM的托管内存在TM内的TS之间平均分配。插槽之间没有发生CPU隔离,只划分了托管内存。 此外,同一TM中的TS共享TCP连接(通过多路复用)和心跳消息。他们还可以共享数据集和数据结构,从而减少每个任务的开销。

来源:https://ci.apache.org/projects/flink/flink-docs-release-1.5/concepts/runtime.html#task-slots-and-resources

答案 1 :(得分:1)

每个工作程序(TaskManager)是一个JVM进程,并且可以在单独的线程中执行一个或多个子任务。为了控制一个工人接受多少个任务,一个工人有一个所谓的任务槽(至少一个)。

https://ci.apache.org/projects/flink/flink-docs-master/concepts/runtime.html#task-slots-and-resources

enter image description here

答案 2 :(得分:0)

@Janukowitsch的回答很好。 另外,TS代表TM的资源的固定子集。一个TS可以占用 1个以上线程。实际上,一个线程执行一个子任务/任务。多个子任务/任务可以部署在同一插槽中。

答案 3 :(得分:-1)

插槽数通常与每个TaskManager的可用CPU核心数成比例。作为一般建议,taskmanager.numberOfTaskSlots的可用CPU核心数是一个很好的默认值。