在我的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上,每个都有一个插槽。
是否有任何设置来确保两个任务组的分布均匀?
发布于 2022-08-22 08:14:57
我在偶数插槽分配方面也遇到了类似的问题,最终使用了细粒度资源管理。
因此,在您的例子中,让我们假设每个任务管理器都有6Gb RAM和6个核心,例如。然后,为了使每个tm的task-1时隙共享组恰好有5个时隙,而task-2时隙共享组的每个tm正好有一个时隙,我使用了相互排斥的要求:
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插槽。
使用这种时隙共享组配置,我总是能够在所有任务管理器之间得到均匀的时隙共享组时隙分布。
发布于 2022-08-21 16:55:51
用evenly-spread-out-slots: false
用evenly-spread-out-slots: true
我不确定能不能达到你想要做的事情。但是,你有没有尝试过这样做,而没有将任务2放入一个单独的时隙共享组?
https://stackoverflow.com/questions/73435966
复制相似问题