Apache Flink:限制任务管理器中的CPU数



first 我在独立模式下运行

我一直在尝试找到任何配置,但我没有找到任何配置。

在火花中,有一些配置可让您限制每个从属中要使用的CPU的数量:

  • spark_worker_cores(Worker配置(
  • spark.executor.cores(群集配置(

但是,在flink中,您只需设置使用Maximun内存以及任务插槽的数量(仅将内存划分(如官方文档中所述:

  • taskManager.numberoftaskslots:单个任务管理器可以运行的并行操作员或用户函数实例的数量(默认:默认: 1(。如果此值大于1,则单个任务管理器采用 功能或操作员的多个实例。这样, Taskmanager可以使用多个CPU内核,但同时 可用的内存分为不同的操作员或功能 实例。该值通常与数量成正比 Taskmanager机器具有的物理CPU内核(例如 内核的数量,或核心数的一半(。

,这里更专注于我的问题:

每个任务插槽代表固定的资源子集 任务管理器。例如,一个带有三个插槽的任务管理员将 将其托管内存的1/3分配给每个插槽。插入 资源意味着子任务不会与来自子任务的子任务竞争 其他用于托管内存的工作,但有一定数量的 保留的托管内存。请注意,这里没有CPU隔离。 当前插槽仅分开任务的托管内存。

谢谢!

我正在寻找相同的问题。在我的理解中,没有配置将设置每个插槽的CPU数。设置插槽数将在插槽之间划分存储器,以减少每个插槽的内存。我最好的猜测是将插槽的数量设置为1,并将CPU可用于在容器中运行的任务管理器进程(可能是Docker(。您可以通过增加任务管理人员的数字来实现相同的并行性。

认为这是在Flink配置文档中:https://ci.apache.org/projects/flink/flink/flink-docs-stable/ops/config.html#yarn

yarn.containers.vcores -1

每个纱线容器的虚拟内核数(VCORS(的数量。默认情况下,vCores的数量设置为每个TaskManager(如果设置(或1到1的插槽数。为了使用此参数,您的群集必须启用CPU计划。您可以通过设置org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.fair.fair.fair.fairscheduler。

David在上面是正确的 - 但其原因是因为这种设置,我认为这更紧密地回答了操作问题。因此,如果离开默认值,调整任务插槽的数量将调整内核数。

最新更新