我在本地计算机上开发一个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#任务链和资源-组)。 –