关于 Flink 上的节点数

About nodes number on Flink

我正在我的本地机器上开发一个 Flink 玩具应用程序,然后将真实的应用程序部署到真实的集群上。 现在我必须确定我需要多少个节点来设置集群。

但我仍然对我必须考虑多少节点来执行我的应用程序感到困惑。

例如,如果我有以下代码(来自文档):

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));

部分确认:

我认为我的吞吐量和数据负载不相关,它不重。

如果您还没有阅读过,我建议您阅读 https://ci.apache.org/projects/flink/flink-docs-release-1.3/concepts/runtime.html,其中解释了 Flink 运行时是如何组织的。

每个任务管理器(工作节点)都有一定数量的任务槽(至少一个),并且 Flink 集群需要与作业中使用的最高并行度一样多的任务槽。因此,如果整个作业的并行度为 1,那么单个节点就足够了。如果并行度为N,可用的任务槽少于N个,则作业无法执行。

Flink 社区正在致力于动态缩放,但从 1.3 版本开始,还没有。