我在本地計算機上開發一個Flink玩具應用程序,然後在真實羣集上部署真實的玩具應用程序。 現在我必須確定需要設置羣集的節點數量。關於Flink上的節點號
但是我仍然對有多少節點需要考慮執行我的應用程序感到困惑。
例如,如果我有以下代碼(從DOC):
DataStream<String> lines = env.addSource(new FlinkKafkaConsumer<>()...);
DataStream<Event> events = lines.map((line)->parse(line));
DataStream<Statistics> stats = events
.keyBy("id");
.timeWindow(Time.seconds(10))
.apply(new MyWindowAggregationFunction());
stats.addSink(new RollingSink(path));
- 這意味着,操作「上同一行」在相同的節點上執行? (這聽起來有點怪我)
一些證實:
如果回答前一個問題是肯定的,如果我設置並行至1,我可以建立我需要多少個節點計數如何我必須執行許多操作?
如果我將並行度設置爲N,但我的可用節點少於N個,Flink會自動縮放可用節點上的精細度?
我的吞吐量和數據負載不相關我認爲這並不重要。
好的,但是,看看圖像: https://ibb.co/dCYVHk 我想建立一個像這樣的管道,其中每個圓代表一個不同的物理節點。在我看來,我的並行度爲'1',並且集羣是像圖像中的一組管道(也是因爲我有一個無界流,所以我更喜歡如果每個節點必須執行快速操作(實時)以避免創建長隊列) –
Flink可以靈活地按照您描述的方式進行配置。您可以安排每個插槽有多個CPU,並且您還可以通過任務鏈和資源組來控制操作員分組(https://ci.apache.org/projects/flink/flink-docs-release -1.3的/ dev/datastream_api.html#任務鏈和資源-組)。 –