资源过度分配到flink中的插槽

kxe2p93d  于 2021-06-25  发布在  Flink
关注(0)|答案(1)|浏览(320)

关于flink上允许优化集群中资源使用的功能(+延迟、吞吐量…),即插槽共享、任务链、异步i/o和动态伸缩,我想问以下问题(都在流处理上下文中):
在哪些情况下,有人会对任务管理器中的插槽数高于cpu内核数感兴趣?
在哪种情况下,为了让应用程序跟上传入的数据速率,我们应该在多个插槽上拆分任务管道(禁用插槽共享),而不是增加并行性?
是否有可能,即使在使用上述所有功能时,为某个插槽保留的资源量也可能高于该插槽中所有任务所需的资源量,从而导致我们拥有为某个插槽保留但未被使用的资源?当应用程序中的任务具有不同的延迟(或不同的并行性)时,是否可能出现这样的问题?或者甚至当我们在同一个窗口上执行多个聚合(不能使用折叠或缩小优化)时?
提前谢谢。

ajsxfq5m

ajsxfq5m1#

通常,建议每个插槽至少保留一个cpu内核。您希望保留比核心更多的插槽的一个原因是您在操作符中执行阻塞操作。这样你就可以让你所有的核心保持忙碌。
如果您发现应用程序无法跟上传入数据的速率,那么通常最好增加并行度(假设瓶颈不是parallelism 1的操作符,并且您的数据有足够的键值)。
如果在一个管道中有多个计算密集型操作符(甚至可能是链式的),并且每个插槽的核心数少于这些操作符,那么拆分管道可能是有意义的。这样,这些运算符的计算可以更好地同时进行。
从理论上讲,您可以为插槽分配比实际需要更多的资源。e、 g.每个插槽中只有一个操作符,但分配了多个内核。另外,在操作符的并行性不同的情况下,一些插槽可能会比其他插槽分配更多的子任务。您可以随时监视作业的执行,以检测资源调配不足和过度。

相关问题