码迷,mamicode.com
首页 > 其他好文 > 详细

flink流计算随笔(4)

时间:2018-11-13 20:14:56      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:ast   一个   目标   交换   随机   broadcast   分区   one   分布式   

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

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

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

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

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

flink流计算随笔(4)

标签:ast   一个   目标   交换   随机   broadcast   分区   one   分布式   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!