概述
- parallelism指的是并行度的意思。在 Flink 里面代表每个任务的并行度,适当的提高并行度可以大大提高 job 的执行效率,比如你的 job 消费 kafka 数据过慢,适当调大可能就消费正常了。
- slot指的是插槽的意思,flink中任务的并行性由每个 Task Manager 上可用的 slot 决定。
设置并行度的几种方式
- 执行环境层面
env.setParallelism(3);
- 算子层面
sum(1).setParallelism(3)
- 客户端层面
./bin/flink run -p 3
- 系统层面
修改配置文件设置/conf/flink-conf.yaml的parallelism.defaul数值
parallelism与slot的区别
- slot 是指 taskmanager 的并发执行能力
如上图所示:taskmanager.numberOfTaskSlots:3;即每一个 taskmanager 中的分配 3 个 TaskSlot, 3 个 taskmanager 一共有 9 个 TaskSlot。
- parallelism 是指 taskmanager 实际使用的并发能力
如上图所示:parallelism.default:1;即运行程序默认的并行度为 1,9 个 TaskSlot 只用了 1 个,有 8 个空闲。设置合适的并行度才能提高效率。
- parallelism 是可配置、可指定的;
上图中 example2 每个算子设置的并行度是 2, example3 每个算子设置的并行度是 9。
- example4 除了 sink 是设置的并行度为 1,其他算子设置的并行度都是 9。