Flink

Physical Partitioning in Flink S

2018-08-18  本文已影响93人  远o_O

一、Physical partitioning

1、Custom partitioning

2、Shuffle (Random partitioning 随机)

3、Rebalancing partitioning(均匀 via round robin method)

4、Rescaling

Rescaling is used to distribute the data across operations, perform transformations on sub-sets of data and combine them together. This rebalancing happens over a single node only, hence it does not require any data transfer across networks.

5、Broadcasting(动态规则更新)

二、比较

1、shuffle VS rebalance(来自stackoverflow)

正如文档所述,shuffle将随机分发数据,而rebalance将以循环方式分发数据。后者更有效,因为您不必计算随机数。而且,根据随机性,你最终可能会得到某种不那么均匀的分布。

另一方面,rebalance将始终开始将第一个元素发送到第一个通道。因此,如果您只有少量元素(元素少于子任务),那么只有部分子任务将接收元素,因为您总是开始将第一个元素发送到第一个子任务。在流式传输的情况下,这最终无关紧要,因为你通常有一个无界的输入流。

两种方法存在的实际原因是历史原因。shuffle首先介绍。为了使批处理的流API更加相似,rebalance然后介绍了

2、Rescaling(低配版Rebalance, 无需网络传输)

以round-robin方式对元素分区到下游operations。如果你想从source的每个并行实例分散到若干个mappers以负载均衡,但是你不期望rebalacne()那样进行全局负载均衡,这将会有用。这将仅需要本地数据传输,而不是通过网络传输数据,具体取决于其他配置值,例如TaskManager的插槽数。

上游operation所发送的元素被分区到下游operation的哪些子集,取决于上游和下游操作的并发度。例如,如果上游operation并发度为2,而下游operation并发度为6,则其中1个上游operation会将元素分发到3个下游operation,另1个上游operation会将元素分发到另外3个下游operation。相反地,如果上游operation并发度为6,而下游operation并发度为2,则其中3个上游operation会将元素分发到1个下游operation,另1个上游operation会将元素分发到另外1个下游operation。

在上下游operation的并行度不是彼此的倍数的情况下,下游operation对应的上游的operation输入数量不同。


image.png
上一篇下一篇

猜你喜欢

热点阅读