Flink-任务槽和并行度的关系

任务槽和并行度都跟程序的并行执行有关,但两者是完全不同的概念。简单来说任务槽是静态的概念,是指TaskManager具有的并发执行能力,可以通过参数taskmanager.numberOfTaskSlots进行配置;而并行度是动态概念,也就是TaskManager运行程序时实际使用的并发能力,可以通过参数parallelism.default进行配置。

举例说明:假设一共有3个TaskManager,每一个TaskManager中的slot数量设置为3个,那么一共有9个task slot,表示集群最多能并行执行9个算子。

而我们定义word count程序的处理操作是四个转换算子:

source→ flatmap→ reduce→ sink

当所有算子并行度相同时,容易看出source和flatmap可以合并算子链,于是最终有三个任务节点。

Flink-任务槽和并行度的关系_第1张图片 

 Flink-任务槽和并行度的关系_第2张图片

 Flink-任务槽和并行度的关系_第3张图片

 Flink-任务槽和并行度的关系_第4张图片

 通过这个例子也可以明确地看到,整个流处理程序的并行度,就应该是所有算子并行度中最大的那个,这代表了运行程序需要的slot数量

你可能感兴趣的:(Flink,flink,大数据)