首页 文章

Apache Flink:限制TaskManager中的CPU数量

提问于
浏览
1

首先 I am running on Standalone mode

我一直试图找到任何配置,但我还没有找到任何关于此的内容 .

在Spark中,有一些配置允许您限制每个从站中使用的CPU数量:

  • SPARK_WORKER_CORES( Worker 配置)

  • spark.executor.cores(群集配置)

但是在Flink中你可以设置要使用的最大内存和任务槽的数量(它只是划分内存),如上所述in the official documentation

taskmanager.numberOfTaskSlots:单个TaskManager可以运行的并行操作符或用户函数实例的数量(默认值:1) . 如果此值大于1,则单个TaskManager将获取函数或运算符的多个实例 . 这样,TaskManager可以使用多个CPU内核,但同时,可用内存在不同的操作员或功能实例之间划分 . 该值通常与TaskManager的机器具有的物理CPU核心数成比例(例如,等于核的数量,或核的数量的一半) .

并且here more focused在我的问题上:

每个任务槽代表TaskManager的固定资源子集 . 例如,具有三个插槽的TaskManager将其1/3的托管内存专用于每个插槽 . 切换资源意味着子任务不会与来自其他作业的子任务竞争托管内存,而是具有一定量的保留托管内存 . 请注意,这里没有CPU隔离;当前插槽只分离任务的托管内存 .

谢谢!!

1 回答

  • 0

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

相关问题