问题描述
我已经在我的 IDE (Intellij) 和独立集群中运行了我的 Flink 程序(在 Scala 中)。在我的程序中,我打印出运行时间。我在 IDE 中运行时得到 20 秒,在独立集群中运行时得到 74 秒。我很困惑为什么在具有 10 个并行度的集群中运行需要这么多时间。我试图基本上将 Flink 性能与 Spark 进行比较。有人可以帮我理解它是怎么发生的吗?谢谢。
已添加:
可以在 here 找到我的程序示例。此特定代码在控制台中打印的时间如下:
- Flink(IDE、Windows):2550 毫秒
- Flink(独立集群,WSL2 Ubuntu):9076 毫秒
我已更改的 Flink 独立集群的配置:
- jobmanager.memory.process.size: 2600m
- taskmanager.memory.process.size: 5728m
- taskmanager.numberOfTaskSlots:20
- parallelism.default: 4
- 其余配置使用默认值。
运行 flink jar : flink run --class flinkutils.generated.Test2Agg2Spark ./target/scala-2.12/executorflink_2.12-0.1.jar
解决方法
影响性能的一个因素是,当在 IDE 中运行时,一切都在单个 JVM 中运行,并且数据在内存中传送。而在集群中,数据通过 TCP 堆栈。
但这是一个复杂的场景,许多其他因素也可能对性能产生负面影响。
FWIW,Flink SQL 在 TPC-H 基准测试中获得了良好的性能(如果配置正确)。