概述
parallelism指的是并行度的意思。在 Flink 里面代表每个任务的并行度,适当的提高并行度可以大大提高 job 的执行效率,比如你的 job 消费 kafka 数据过慢,适当调大可能就消费正常了。
slot指的是插槽的意思,flink中任务的并行性由每个 Task Manager 上可用的 slot 决定。
如何设置flink job的parallelism
在flink的配置文件中flink-conf.yaml,默认的并行度为1;
在以shell的方式提交flink job的时候,可以使用-p指定程序的并行度;
./bin/flink run -p 10 ../word-count.jar
在flink job程序内设置并行度
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.setParallelism(10);
注意:这样设置的并行度是你整个程序的并行度,那么后面如果你的每个算子不单独设置并行度覆盖的话,那么后面每个算子的并行度就都是这里设置的并行度的值了。
每个算子指定并行度;
data.keyBy(new xxxKey())
.flatMap(new XxxFlatMapFunction()).setParallelism(5)
.map(new XxxMapFunction).setParallelism(5)
.addSink(new XxxSink()).setParallelism(1)
并行度设置优先级是:算子设置并行度 > env 设置并行度 > 配置文件默认并行度
如何理解flink中的slot
fli