如果 operator 的总并行实例数高于 Flink Application 的并行度会怎样?

What happens if total parallel instances of operators are higher than the parallelism Flink Application?

如果算子的并行实例总数高于 flink 系统的并行度会怎样?

场景如下:

kafkaSource1.map(Mapper1).sink(sink1);
kafkaSource2.map(Mapper2).sink(sink1);

部署这个5并行的数据流后,TaskManager会不会过载?

据我了解,任务将像这样分布到 TaskManager 的插槽中:

图表正确。如果禁用运算符链接,则每个槽将包含 5 个任务,如图所示。每个任务都有一个 Java 线程,它将在网络上处于阻塞状态,直到有输入要处理。所有这些任务将 运行 独立地并行进行。

但是,禁用运算符链接是一个非常糟糕的主意。您将为此付出巨大的性能损失,因为它会导致 serialization/deserialization 在不需要的地方出现。 (此外,如果映射器只是从 Kafka 进行反序列化,那么如果您使用适当的 KafkaDeserializationSchema 并消除映射器,您将获得更好的性能。)

任务管理器会超载吗?可能不会,前提是您在运算符链接等方面做出了正确的选择。如果映射器正在做一些异常昂贵的事情,我只会担心。但这在一定程度上取决于您需要达到的吞吐量。