在flink中为每个工人设置taskmanager.numberoftaskslots

h7appiyu  于 2021-06-24  发布在  Flink
关注(0)|答案(1)|浏览(1199)

我在一个独立的集群中工作。所有服务器都可以运行taskmanager.sh。我的集群是异构的,具有不同的核心计数和内存。我运行的代码(apachebeam pardo的)是一个python单线程操作。
我想为每台服务器设置不同的任务槽数。如何让flink为不同的服务器运行不同的插槽?
我应该为每台服务器启动多个taskmanager.sh吗?
裁判:https://stackoverflow.com/a/54117789/2184122
我也希望这一声明:

A Flink cluster needs exactly as many task slots as the highest parallelism
used in the job. No need to calculate how many tasks (with varying parallelism)
a program contains in total.

表示插槽总数(即大致为#主机*#核心/主机)。我的理解正确吗??

jjjwad0x

jjjwad0x1#

通常建议每个taskmanager运行一个插槽作为起点(特别是在容器化环境中,尽管这听起来不像您的情况)。这提供了更好的隔离,并使堆的大小更小,从而将gc影响降到最低。不过,在某个时候,随着您的扩展,让作业管理器协调这么多个tm变得不可行,您最好使用每个tm多个插槽。
而且,调度器只考虑时隙,而不是tms,因此您希望时隙在资源方面保持一致。一个典型的出发点是为每台机器分配尽可能多的插槽,尽管对于计算密集型工作负载,您可能需要为每个插槽分配更多的内核。对于需要很少cpu的工作负载来说,换个方向,分配更多的插槽而不是内核是有意义的。

相关问题