TaskManager與Slot介紹
Flink的每個TaskManager爲集羣提供solt。 solt的數量通常與每個TaskManager節點的可用CPU內核數成比例。一般情況下你的slot數是你每個節點的cpu的核數。
並行度(Parallel)
一個Flink程序由多個任務組成(source、transformation和 sink)。 一個任務由多個並行的實例(線程)來執行, 一個任務的並行實例(線程)數目就被稱爲該任務的並行度。
任務的並行度設置可以從多個層次指定
•Operator Level(算子層次)
•Execution Environment Level(執行環境層次)
•Client Level(客戶端層次)
•System Level(系統層次)
並行度設置之Operator Level
算子、數據源和sink的並行度可以通過調用 setParallelism()方法來指定
final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
DataStream<String> text = [...]
DataStream<Tuple2<String, Integer>> wordCounts = text
.flatMap(new LineSplitter())
.keyBy(0)
.timeWindow(Time.seconds(5))
.sum(1).setParallelism(5);
wordCounts.print();
env.execute("Word Count Example");
並行度設置之Execution Environment Level
執行環境(任務)的默認並行度可以通過調用setParallelism()方法指定。爲了以並行度3來執行所有的算子、數據源和data sink, 可以通過如下的方式設置執行環境的並行度:
final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
env.setParallelism(3);
DataStream<String> text = [...]
DataStream<Tuple2<String, Integer>> wordCounts = [...]
wordCounts.print();
env.execute("Word Count Example");
並行度設置之Client Level
並行度可以在客戶端將job提交到Flink時設定。對於CLI客戶端,可以通過-p參數指定並行度:
./bin/flink run -p 10 ../examples/*WordCount-java*.jar
並行度設置之System Level
在系統級可以通過設置flink-conf.yaml文件中的parallelism.default屬性來指定所有執行環境的默認並行度