0


flink算子的并行度设置方法

#flink算子的并行度设置方法

并行度(Parallelism)是flink中一个非常重要的概念,它主要是指一个算子可以被分的子任务数,通常越高就意味着算子计算速度越快。

在这里插入图片描述

如上图所示,map()算子的并行度为2,window()算子的并行度也为2,也可以说整个数据流的并行度就是2。并行度的设置方式有很多,可以总结为以下四种:

1.在算子操作后设置(优先级最高)

在我们设计一系列算子时,我们可以在算子后调用 setParallelism()方法,它只能决定当前算子的并行度,其他算子不受影响。

stream.map(word ->Tuple2.of(word,1L)).setParallelism(2);

此时map算子的并行度为2,它的并行度不受后三种配置方法的影响。

2.在创建执行环境后设置(优先级仅低于第一种设置方法)

在每次编写flink代码时,都需要先创建执行环境。在创建完执行环境后就可以进行一系列的设置,其中就包括并行度设置,示例代码如下:

StreamExecutionEnvironment env =StreamExecutionEnvironment.getExecutionEnvironment();
env.setParallelism(2);

这种方式是全局并行度设置,一般不是很推荐,原因在于如果直接将所有算子都设置相同的并行度,会导致无法动态扩容,所有设置都硬编码在程序中不是一个好的选择。

3.在提交任务时设置(优先级低于方法1和方法2)

在提交任务时,一般可以设置一些必要的参数,其中-p选项可以设置全局并行度,方法如下:

bin/flink run –p 4 –c com.flink.MyStreamWordCount ./LearnFlink-1.0-SNAPSHOT.jar

这里将全局并行度设置为4,这种方法也可以在Web UI中使用。如下图所示:
在这里插入图片描述
4.直接使用集群的默认并行度(优先级最低)

在集群配置文件conf/flink-conf.yaml 中直接更改默认并行度:

parallelism.default: 2

这个设置对于整个集群上提交的所有作业有效,初始值为 1。只有当前三中配置都不存在时,才会采用该配置。如果该配置文件不存在,就会默认将cpu的核心数作为默认并行度。

总结:

四种配置方式优先级如下:

算子操作后设置 > 创建执行环境后设置 > 提交任务时设置 > 使用集群的默认并行度

标签: flink 大数据

本文转载自: https://blog.csdn.net/qq_39889944/article/details/134216085
版权归原作者 时代新人0-0 所有, 如有侵权,请联系我们删除。

“flink算子的并行度设置方法”的评论:

还没有评论