首页 > 其他 > 详细

flink流计算随笔(4)

时间:2018-11-13 19:58:08      阅读:192      评论:0      收藏:0      [点我收藏+]
Flink中的程序本质上是并行的和分布式的。在执行期间,流有一个或多个流分区,每个操作符有一个或多个操作符子任务。操作符子任务相互独立,在不同的线程中执行,可能在不同的机器或容器上执行。

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

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

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

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

flink流计算随笔(4)

原文:http://blog.51cto.com/13959448/2316202

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!