slot在flink里面可以认为是资源组,Flink是通过将任务分成子任务并且将这些子任务分配到slot来并行执行程序。
每个Flink TaskManager在集群中提供处理槽。 插槽的数量通常与每个TaskManager的可用CPU内核数成比例。一般情况下你的slot数是你每个TM的cpu的核数。
启动Flink应用程序时,(在CLI情况下)用户可以提供用于该作业的默认插槽数,通过-p来指定并行数。
./bin/flink run -p 10 ../examples/*WordCount-java*.jar
此外,在程序中可以通过env.setParallelism()来设定,此时设定的是整个程序的并行度。
final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.setParallelism(3);
DataStream<String> text = [...]
DataStream<Tuple2<String, Integer>> wordCounts = [...]
wordCounts.print();
env.execute("Word Count Example");
当然我们也可以为单个操作符(Operator)设置编程API中的slot数目。
final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
DataStream<S