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的核心数作为默认并行度。

总结:

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

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

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值