flink流计算随笔(4)

本文深入探讨Apache Flink中的并行处理机制,解释了流如何在操作符之间以一对一或重分发模式传输数据,以及这如何影响元素的分区和顺序。并详细说明了运算符子任务如何独立执行,以及不同并行度如何影响整体处理效率。

Flink中的程序本质上是并行的和分布式的。在执行期间,流有一个或多个流分区,每个操作符有一个或多个操作符子任务。操作符子任务相互独立,在不同的线程中执行,可能在不同的机器或容器上执行。

运算符子任务的数量是特定运算符的并行度。一个流的并行性总是它的生产操作符的并行性。同一程序的不同运算符可能具有不同级别的并行性。

流可以在两个操作符之间以一对一(或转发)模式传输数据,也可以在重分发模式中传输数据:

一对一One-to-one流(例如上图中源和map()运算符之间的流)保持元素的分区和顺序。这意味着map()操作符的子任务将看到与源操作符的子任务生成的元素相同的顺序。

重新分布Redistributing流(如上面的map()和keyBy/window之间,以及keyBy/window和Sink之间)改变流的分区。每个操作符子任务根据所选的转换将数据发送到不同的目标子任务。例如:keyBy()(通过散列键来重新分区)、broadcast()或rebalanced()(随机重新分区)。在重分发交换中,元素之间的顺序只保留在每一对发送和接收子任务中(例如map()的子任务和keyBy/window的子任务)。因此,在本例中,每个键中的顺序都是保留的,但是并行性确实引入了关于不同键的聚合结果到达sink的顺序的不确定性。

转载于:https://blog.51cto.com/13959448/2316202

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值