存在两个影响任务可用资源量的维度:
jobmanager的数量
TaskManager可用的任务槽数。
每个TaskManager有一个插槽意味着每个任务组在一个单独的JVM中运行(例如,可以在一个单独的容器中启动)。拥有多个插槽意味着更多子任务共享同一个JVM。同一JVM中的任务共享TCP连接(通过多路复用)。它们还可以共享数据集和数据结构,从而减少每任务开销。
在文档中使用这一行,似乎总是错误地增加每个任务管理器的任务槽数而不是增加任务管理器的数量。
具体方案:如果我在Kubernetes中部署了一个作业集群(让我们假设有16个CPU核心可用)和一个由一个源+一个映射函数+一个接收器组成的管道,那么我将默认使用一个具有16个可用插槽的TaskManager到那个TaskManager。
这是最佳配置吗?是否有一种情况是每个插槽有一个插槽,或者可能是TaskManager和插槽的组合,可以利用所有16个CPU内核?
没有最佳配置,因为通常无法定义“最佳”。每个TM具有单个插槽的配置提供了良好的隔离,并且通常更易于管理和推理。
如果您运行多个作业,则多插槽配置可能会将不同作业的任务计划为一个TM。如果TM发生故障,例如,由于两个任务中的任何一个消耗了太多内存,两个作业都将重新启动。另一方面,每个TM运行一个插槽可能会留下更多未使用的内存。如果每个群集只运行一个作业,则每个TM的多个插槽可能没问题。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。