Flink 再平衡和链式策略
Posted
技术标签:
【中文标题】Flink 再平衡和链式策略【英文标题】:Flink rebalance and chaining strategy 【发布时间】:2020-04-20 11:06:43 【问题描述】:背景
我们使用dataStream.rebalance()
在我们的分区上创建相等的负载。但是,我们通常将链接策略设置为HEAD
,例如,以允许多线程转换分配。
问题
是在重新平衡推荐的做法之前设置链接策略,还是 Flink 在重新平衡之后自动允许多线程转换分配?
【问题讨论】:
【参考方案1】:作为用户,您通常从不设置链接策略。仅当您有自定义运算符时才设置它。事实上,我们目前正在弃用操作员级别的链式策略,并且只允许在操作员工厂级别使用它。
默认情况下,所有运算符都是ALWAYS
可链接的。这意味着,只要它们共享同一个槽并与正向通道连接,就会跳过网络/本地通道,并将记录直接交给下一个转换。因此,如果通过任何类型的 shuffle 连接(例如,rebalance
)连接,则不能链接任何运算符。
因此,在不更改任何链接策略的情况下,您将获得由任何 shuffle 操作分隔的长管道。
现在,如果您将其更改为 HEAD
以用于直接在 shuffle 操作之后的所有运算符,您实际上将有一个无操作。 Head 表示算子只能是算子链的头部。如果你还改变了洗牌后所有转换的策略,你实际上根本不会得到链。 (从您的问题中,这一点并不完全清楚)
TL;DR 不会更改链接策略,除非您实现自己的运算符。它不会比默认更快。
【讨论】:
以上是关于Flink 再平衡和链式策略的主要内容,如果未能解决你的问题,请参考以下文章