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





