hi,社区已经发现了这个问题,之前也看到有同学有这样的疑问。
社区会在后续版本中修复,目前规划的是在1.7.3, 1.8.2, 1.9.0几个版本中修复。详情可以参考:
https://issues.apache.org/jira/browse/FLINK-12122徐涛 <
[hidden email]> 于 2019年7月21日周日 上午10:39写道:
> Hi All,
> 现在申请Slot的流程是
> SlotPool -> ResourceManager -> TaskManager -> SlotPool
>
> 在ResourceManager中具体选择哪个Slot做分配是根据SlotManager.findMatchingSlot来的,在其中是遍历freeSlots这个LinkedHashMap,如果发现可用,则使用这个Slot。
> 问题在于freeSlots中的slot一般是在每个TaskManager向ResourceManager注册的时候生成的。里面的内容可能是:
> Slot1-1, Slot1-2, Slot1-3, Slot1-4, Slot2-1, Slot2-2, Slot2-3, Slot2-4,
> Slot3-1, Slot3-2, Slot3-3, Slot3-4
>
> 那么在分配Slot的时候,就会发生这样的现象,先将一个TaskManager上的Slot全部占用以后,再去把下一个TaskManager上的所有Slot占用。Slot没有在多个TaskManager之间均匀分配。
> 请问下:
> 1. 这样会导致某个TM上全部运行某个Job的SubTask。
> 这样在分布式程序的分布性上面,没有分布在多台机器上,而是分布在了少数的几台机器上。
> 2. Flink是故意这样设计的吗?是什么原因导致这样的设计方案?
>
>
> 谢谢
> 徐涛