Cluster computing 关于Flink上的节点数

Cluster computing 关于Flink上的节点数,cluster-computing,apache-flink,Cluster Computing,Apache Flink,我正在本地机器上开发一个Flink toy应用程序,然后将真正的应用程序部署到真正的集群上。 现在我必须确定需要多少节点来设置集群 但是我还是有点困惑,我需要考虑多少个节点来执行我的应用程序。 例如,如果我有以下代码(来自文档): datastreamlines=env.addSource(新的flinkkafaconsumer()…); datastreamevents=lines.map((line)->parse(line)); 数据流统计数据=事件 .keyBy(“id”); .时间窗口

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

<>但是我还是有点困惑,我需要考虑多少个节点来执行我的应用程序。 例如,如果我有以下代码(来自文档):

datastreamlines=env.addSource(新的flinkkafaconsumer()…);
datastreamevents=lines.map((line)->parse(line));
数据流统计数据=事件
.keyBy(“id”);
.时间窗口(时间.秒(10))
.apply(新的MyWindowAggregationFunction());
addSink(新RollingSink(路径));
  • 这意味着“在同一行上”的操作是在同一个节点上执行的?(听起来有点奇怪)
一些人确认:

  • 如果上一个问题的答案是肯定的,并且如果我将parallelism设置为1,那么我可以确定需要多少节点来计算需要执行多少操作

  • 如果我将parallelism设置为N,但可用节点少于N个,Flink会自动在可用节点上缩放细化


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

如果您还没有,我建议您阅读,它解释了Flink运行时是如何组织的

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


Flink社区正在进行动态重缩放,但从1.3版开始,它还不可用。

好的,但是,例如,请看图片:我想构建一个这样的管道,其中每个圆代表一个不同的物理节点。在我看来,我的并行度为“1”,集群是一组类似于图中所示的管道(也因为我有一个无界流,所以我更喜欢每个节点都必须执行快速操作(实时)以避免创建长队列)Flink可以灵活地按照您描述的方式进行配置。您可以安排每个插槽有多个可用的CPU,还可以通过任务链和资源组()将操作员分组到插槽中。
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));