task-manager中taskslot的classloader隔离问题

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

task-manager中taskslot的classloader隔离问题

Ever
有一个job有2个task,每个task分别有3个subtask(并行度为3), 如下图所示。

每个subtask会占用一个taskslot, 但是同一个job的不同task的subtask可以共享同一个taskslot, 所以这里应该是一个taskslot会有2个subtask。
那么这两个share同一个taskslot的subtask, 其classloader是同一个, 还是说每个subtask都有不同的classloader呢?

因为我的job中会用到一个静态类(Scala的Object或者java中的单例类), 类里面有个包含基础数据的集合成员变量。我想知道这个变量是需要在每个subtask中初始化, 还是只需要在jvm范围内初始化一次。

Reply | Threaded
Open this post in threaded view
|

Re: task-manager中taskslot的classloader隔离问题

Biao Liu
同一个 TM 中,相同 job 的 subtask 会共享一个 classloader

Thanks,
Biao /'bɪ.aʊ/



On Sat, 28 Sep 2019 at 09:30, Ever <[hidden email]> wrote:

> 有一个job有2个task,每个task分别有3个subtask(并行度为3), 如下图所示。
>
> 每个subtask会占用一个taskslot, 但是同一个job的不同task的subtask可以共享同一个taskslot,
> 所以这里应该是一个taskslot会有2个subtask。
> 那么这两个share同一个taskslot的subtask, 其classloader是同一个,
> 还是说每个subtask都有不同的classloader呢?
>
> 因为我的job中会用到一个静态类(Scala的Object或者java中的单例类),
> 类里面有个包含基础数据的集合成员变量。我想知道这个变量是需要在每个subtask中初始化, 还是只需要在jvm范围内初始化一次。
>
>