一、并行度(Parallel)
一个Flink程序由多个组件组成(Source、Transformation和 Sink)。 一个组件由多个并行实例(线程)来执行, 一个组件的并行实例(线程)数目就被称为该组件的并行度。
二、TaskManager与Slot
Flink的每个TaskManager为集群提供Solt, Solt的数量通常与每个TaskManager节点的可用CPU数量成比例,一般情况下Slot的数量就是每个节点的可用CPU数量。
三、并行度的设置
Flink任务的并行度可以通过4个层面来设置。
1、Operator Level(算子层面)
2、Execution Environment Level(执行环境层面)
3、Client Level(客户端层面)
4、System Level(系统层面)
这些并行度优先级为Operator Level>Execution Environment Level>Client Level>System Level
1、并行度设置之Operator Level
算子、数据源和目的地的并行度可以通过调用 setParallelism()方法来指定
2、并行度设置之Execution Environment Level
执行环境层面的并行度可以通过调用setParallelism()方法指定。为了以并行度3来执行所有的算子、数据源和目的地, 可以通过如下的方式设置执行环境的并行度。
注意:执行环境的并行度可以通过显式设置算子的并行度而被重写。
3、并行度设置之Client Level
并行度还可以在客户端提交Job时设定。
通过-p参数指定并行度。
bin/flink run -p 10 FlinkDemo.jar
这里表示把并行度设置为10。
4、并行度设置之System Level
在系统层面可以通过设置flink-conf.yaml文件中的parallelism.default属性来指定所有执行环境的默认并行度。
四、并行度案例分析