我有一组3机器,每个机器都有4核。每台机器都有一个任务管理器。我知道Flink中的插槽数可以由taskmanager.numberOfTaskSlots控制。我最初总共分配了12插槽(每个任务管理器都有4插槽)。虽然插槽之间没有明确的CPU隔离(如前面提到的这里),但我假设每个插槽大约使用一个核心。我猜对了吗?
我在代码中没有提到任何插槽共享组,我的管道没有任何阻塞边缘。每个任务的并行性是相同的,并且等于插槽的数量。我假设每个任务中有一个子任务位于一个时隙中。我对这个理解是正确的吗?
经过一些对话(好奇的头脑是链接的:-),我想把每个时隙的核心增加到2进行我的实验。那么,我将每台机器上的taskmanager.numberOfTaskSlots降为2?完成此操作后,我看到Flink WebUI显示6时隙为总计,而2时隙为每个任务管理器。我还将每个任务的并行性降低到6。这就是我要做的?
注意:我现在没有使用细粒度资源管理的MVP功能。
发布于 2022-06-08 13:24:53
听起来不错。
每个任务管理器都是一个JVM。任务槽不对应于任何物理的--它只是一个由Flink调度程序管理的抽象资源。任务槽中的每个任务都是执行图中一个操作符链的实例,每个任务都是单线程的。同一个运算符链的任何两个实例都不会被调度到同一个槽中。
给定任务管理器中所有槽中所有任务的所有线程都将争夺JVM可用的资源:内核、内存等。
正如您已经注意到的,没有方法显式地设置每个时隙的核心数。而且不需要这个数字是一个整数。例如,您可以决定您的4核TMs每个都提供3个时隙,在3个TMs之间的并行性为9个。
https://stackoverflow.com/questions/72536853
复制相似问题