Flink中每一个worker(TaskManager)都是一个JVM进程,它可能会在独立的线程(Solt)上执行一个或多个subtask。Flink的每个TaskManager为集群提供Solt。Solt的数量通常与每个TaskManager节点的可用CPU内核数成比例,一般情况下Slot的数量就是每个节点的CPU的核数。
Slot的数量由集群中flink-conf.yaml配置文件中设置taskmanager.numberOfTaskSlots的值为3,这个值的大小建议和节点CPU的数量保持一致。
一个任务的并行度设置可以从4个层面指定:
- Operator Level(算子层面)。
- Execution Environment Level(执行环境层面)。
- Client Level(客户端层面)。
- System Level(系统层面)。
这些并行度的优先级为Operator Level>Execution Environment Level>Client Level>System Level。
1) 并行度设置之Operator Level
Operator、Source和Sink目的地的并行度可以通过调用setParallelism()方法来指定
2) 行度设置之Execution Environment Level
任务的默认并行度可以通过调用setParallelism()方法指定。为了以并行度3来执行所有的Operator、Source和Sink,可以通过如下方式设置执行环境的并行度
3) 并行度设置之Client Level
并行度还可以在客户端提交Job到Flink时设定。对于CLI客户端,可以通过-p参数指定并行度。
4) 并行度设置之System Level
在系统级可以通过设置flink-conf.yaml文件中的parallelism.default属性来指定所有执行环境的默认并行度。