Flink中每一个worker(TaskManager)都是一个JVM进程,它可能会在独立的线程(Solt)上执行一个或多个subtask。Flink的每个TaskManager为集群提供Solt。Solt的数量通常与每个TaskManager节点的可用CPU内核数成比例,一般情况下Slot的数量就是每个节点的CPU的核数。
Slot的数量由集群中flink-conf.yaml配置文件中设置taskmanager.numberOfTaskSlots的值为3,这个值的大小建议和节点CPU的数量保持一致。
image.png
一个任务的并行度设置可以从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()方法来指定
image.png

2) 行度设置之Execution Environment Level

任务的默认并行度可以通过调用setParallelism()方法指定。为了以并行度3来执行所有的Operator、Source和Sink,可以通过如下方式设置执行环境的并行度
image.png

3) 并行度设置之Client Level

并行度还可以在客户端提交Job到Flink时设定。对于CLI客户端,可以通过-p参数指定并行度。
image.png

4) 并行度设置之System Level

在系统级可以通过设置flink-conf.yaml文件中的parallelism.default属性来指定所有执行环境的默认并行度。
image.png