首先我在独立模式下运行!
我一直试图找到任何配置,但我还没有发现任何相关内容。
在Spark中,有一些配置允许您限制每个从站中使用的CPU数量:
但是在Flink中你可以设置要使用的最大内存和任务槽的数量(它只是划分内存),如上所述in the official documentation:
- taskmanager.numberOfTaskSlots:单个TaskManager可以运行的并行操作符或用户函数实例的数量(默认值: 1)。如果此值大于1,则单个TaskManager占用 函数或运算符的多个实例。那样的话 TaskManager可以使用多个CPU核心,但同时也可以 可用内存分为不同的运算符或函数 实例。该值通常与数量成正比 TaskManager的机器具有的物理CPU核心(例如,等于 核心数量,或核心数量的一半)。
here more focused问我的问题:
每个任务槽代表一个固定的资源子集 任务管理器。例如,具有三个插槽的TaskManager将 将1/3的托管内存专用于每个插槽。开槽 资源意味着子任务不会与子任务竞争 管理内存的其他工作,但有一定的数量 保留的托管内存。请注意,这里没有CPU隔离; 当前插槽只分离任务的托管内存。
谢谢!
答案 0 :(得分:0)
我一直在寻找同样的问题。根据我的理解,没有配置可以设置每个插槽的CPU数量。设置插槽数将在插槽之间划分内存,从而减少每个插槽的内存。我最好的猜测是将插槽数设置为1,并使CPU可用于在容器中运行的任务管理器进程(可能是docker)。您可以通过增加任务管理器的数量来实现相同的并行性。
答案 1 :(得分:0)
认为这在flink配置文档中: https://ci.apache.org/projects/flink/flink-docs-stable/ops/config.html#yarn
yarn.containers.vcores -1
每个YARN容器的虚拟核心数(vcore)。默认情况下,vcore数设置为每个TaskManager的插槽数(如果已设置),否则设置为1。为了使用此参数,您的群集必须启用CPU调度。您可以通过设置org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler来实现。
大卫在上面是正确的-但其原因是由于这种设置,我认为这更贴切地回答了OP的问题。因此,如果您保留默认值,则调整任务插槽数将调整内核数。