详解 算子链 并行度 Task

一、前言
在初学Flink时,绝大多数人的入门程序是WordCount。
而且都会打开Flink的WebUI看到如下的图。
虽然很多人把WordCount运行起来了,也得到了正确的结果。
但是对这张图还是不够理解,对并行度、subTask、slot等概念还是很模糊。
本篇博客,就会通过WordCount一步一步的讲解这张图(Job Graph任务图)。

二、WordCount程序的Job Graph(任务图)
为了博客简洁,下面只给出程序的main主体
public static void main(String[] args) throws Exception {
StreamExecutionEnvironment env = StreamExecutionEnvironment
.createLocalEnvironmentWithWebUI(new Configuration());
DataStreamSource<String> source = env.socketTextStream(BaseConstant.URL, BaseConstant.PORT);
SingleOutputStreamOperator<WordCount> wordAndOne = source.flatMap(new MyFlatMapFunction());
SingleOutputStreamOperator<WordCount> sum = wordAndOne
.keyBy(WordCount::getWord)
.sum("counts");
sum.print();
env.execute();
}
1. 代码和Job Graph(任务图)的对应关系
- socketTextStream对应第1个Source: Socket Stream
- flatMap对应第2个Flat Map

本文详细解析了Flink中的并行度设置、SocketStream与FlatMap的并行差异,介绍了算子合并优化机制,包括任务图的结构和算子链的管理。通过WordCount实例演示了如何设置并行度及手动调整算子链。

860

被折叠的 条评论
为什么被折叠?



