首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flink在所有任务管理器中平均分配所需的插槽

Flink在所有任务管理器中平均分配所需的插槽
EN

Stack Overflow用户
提问于 2022-08-21 15:49:44
回答 2查看 97关注 0票数 1

在我的flink工作Task1 & Task2中有两个不同的任务。T1需要10个Parrelism,T2需要2个parrallism,我的集群有两个任务管理器(TM),我的每个任务管理器都有8个插槽。Task1与默认任务组一起运行,而对于任务2 i,则设置单独的时隙共享组。

由于我需要在TM之间平均分配我的演讲sots,所以我添加了一个集群。均匀分布的插槽:真正的和部署我的应用程序,但均匀分布是行不通的。任务管理器1运行8(从Task2运行2,从Task1运行6),任务管理器2运行4。

我的要求是每个任务管理器都应该运行6( Task1为5,Task2为1)

FOr测试,是否均匀分布的插槽:真正的工作运行与否--我注释掉了Task1并提交了Task2,在这里我可以看到Task2运行在TM1和TM2上,每个都有一个插槽。

是否有任何设置来确保两个任务组的分布均匀?

EN

回答 2

Stack Overflow用户

发布于 2022-08-22 08:14:57

我在偶数插槽分配方面也遇到了类似的问题,最终使用了细粒度资源管理

因此,在您的例子中,让我们假设每个任务管理器都有6Gb RAM和6个核心,例如。然后,为了使每个tm的task-1时隙共享组恰好有5个时隙,而task-2时隙共享组的每个tm正好有一个时隙,我使用了相互排斥的要求:

代码语言:javascript
复制
final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();

SlotSharingGroup ssgTask1 = SlotSharingGroup.newBuilder("task-1")
  .setCpuCores(1.1)
  .setTaskHeapMemoryMB(10)
  .build();

SlotSharingGroup ssgTask2 = SlotSharingGroup.newBuilder("task-2")
  .setCpuCores(0.1)
  .setTaskHeapMemoryMB(5900)
  .build();

根据该规范,task-2时隙共享组需要具有5900MB堆的时隙,这几乎占用了任务管理器的所有容量,因此每个任务管理器最多能够分配一个task-2时隙。

类似地,task-1时隙共享组需要1.1 cpu核心,因此每个tm总共有6个内核,每个tm最多能够分配5个task-1插槽。

使用这种时隙共享组配置,我总是能够在所有任务管理器之间得到均匀的时隙共享组时隙分布。

票数 2
EN

Stack Overflow用户

发布于 2022-08-21 16:55:51

evenly-spread-out-slots: false

  • 调度程序将从TM1中获取时隙,直到没有保留,然后转移到TM2。

evenly-spread-out-slots: true

  • 当没有任何其他首选项时,调度程序将从最少使用的TM获取插槽。
  • 源没有首选项
  • 其馀的拓扑结构将遵循,消费者更喜欢与他们的生产者同地办公。

我不确定能不能达到你想要做的事情。但是,你有没有尝试过这样做,而没有将任务2放入一个单独的时隙共享组?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73435966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档