像hash,forward这样的术语在flink计划中是什么意思?

u7up0aaq  于 2021-06-21  发布在  Flink
关注(0)|答案(2)|浏览(1151)

这是我部署作业时显示在 Jmeter 板上的flink计划的图像。如您所见,操作符之间的连接被标记为 FORWARD/HASH 等等。它们指的是什么?什么时候有什么叫做 HASH 什么时候有什么叫做 FORWARD ?

bnlyeluc

bnlyeluc1#

首先,我们知道,flink流媒体作业将根据其作业图(或dag)被划分为多个任务。forward/hash是上游任务和下游任务之间的分区器,用于对输入中的数据进行分区。
什么是前进?前进什么时候发生?
这意味着分区程序只将元素转发给本地运行的下游任务。如果您不直接指定任何分区器或使用带有诸如reblance/keyby之类的分区器的函数,则forward是默认分区器。
什么是哈希?散列什么时候发生?
这是一个分区器,它根据键组索引对记录进行分区。它发生在您调用keyby时。

bksxznpy

bksxznpy2#

请参考以下工作图(使用flink进行欺诈检测)。

前向连接意味着源操作符的一个并行示例所消耗的所有数据都被传输到后续操作符的一个示例。它还表示两个连接运算符的并行程度相同。

dynamickeyfunction和dynamicalertfunction之间的散列连接意味着,对于每条消息,都会计算一个散列代码,并且消息会均匀地分布在下一个操作符的可用并行示例中。这种连接需要使用keyby从flink显式地“请求”。

重新平衡分布要么是由对rebalance()的显式调用引起的,要么是由并行度的变化引起的(对于图2中的作业图,是12->1)。调用rebalance()会导致数据以循环方式重新分区,并有助于在某些情况下减轻数据倾斜。

图2中的欺诈检测作业图包含一个额外的数据源:rules source。它也从Kafka消费。规则被“混合”到通过广播频道的主处理数据流中。不同于在操作符之间传输数据的其他方法,例如转发、散列或重新平衡,这些方法使得每个消息仅可在接收操作符的一个并行示例中进行处理,广播使每条消息在广播流所连接的操作员的所有并行示例的输入处可用。这使得广播适用于需要影响所有消息处理的范围广泛的任务,而不管它们的密钥或源分区如何。

参考文件。

相关问题