Flink 在进行 slot sharing 的时候,不会考虑当前 slot 的任务数、磁盘 IO 这些,而是会遵循“相同 task 的多个 subtask 不能分配到同一个 slot 中”这样的一个规则。
举个例子: 如果作业中有 A, B 两个 vertex,并发为 2,那就有 A1, A2, B1, B2 这 4 个 subtask。 那么 A1 和 A2 不能放到一个 slot 中,B1 和 B2 不能够放到一个 slot 中。 所以,slot sharing 的结果只能是 (A1, B1), (A2, B2) 或 (A1, B2), (A2, B1) 这两种情况。 通常情况下,A 和 B 之间的负载可能存在较大差异,而 A1 和 A2、B1 和 B2 之间通常不会有太大差异。 因此,slot sharing 的规则使得每个 slot 中都分配了一个 A 和一个 B,各个 slot 之间的负载大体上是均衡的。 Thank you~ Xintong Song On Fri, Jul 3, 2020 at 11:12 AM [email protected] <[email protected]> wrote: > Dear, > > 请教一个问题,当前同一个job下的多个task(不在一个算子链)中,都会存在某一个subTask任务过重,这些subTask会分配到同一个slot下吗? > flink在对subTask分配slot时候,会先判断slot当前存在的任务数,磁盘IO之类的吗? > > Thanks, > Hongyang >
