美文网首页Flink
Physical Partitioning in Flink S

Physical Partitioning in Flink S

作者: 远o_O | 来源:发表于2018-08-18 22:20 被阅读93次

    一、Physical partitioning

    • 在一个transformation之后,Flink也提供了底层API以允许用户在必要时精确控制流分区。
    • 所谓的Physical partitioning(或operator partition)就是operator parallel instance即SubTask。
    • Flink allows us to perform physical partitioning of the stream data. You have an option to
      provide custom partitioning. Let us have a look at the different types of partitioning.

    1、Custom partitioning

    • As mentioned earlier, you can provide custom implementation of a partitioner.
    • While writing a custom partitioner you need make sure you implement an efficient hash function.

    2、Shuffle (Random partitioning 随机)

    • Random partitioning randomly partitions data streams in an evenly(均匀) manner.

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

    • This type of partitioning helps distribute the data evenly. It uses a round robin method for distribution. This type of partitioning is good when data is skewed.
      rebalance.jpg

    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(动态规则更新)

    • Broadcasting distributes all records to each partition. This fans out each and every element to all partitions.

    二、比较

    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

    相关文章

      网友评论

        本文标题:Physical Partitioning in Flink S

        本文链接:https://www.haomeiwen.com/subject/jdcqiftx.html