Flink 並行度詳解

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屬性來指定所有執行環境的默認並行度

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章