我有一个 Apache Flink 设置,其中包含一个 TaskManager 和两个处理槽。当我执行并行度设置为 1 的应用程序时,该作业的执行时间约为 33 秒。当我将并行度增加到 2 时,该作业需要 45 秒才能完成。
我在 Windows 机器上使用 Flink,配置为 10 个计算核心(4C + 6G)。我想用 2 个插槽取得更好的结果。我能做些什么?
像 Apache Flink 这样的分布式系统被设计为在数据中心的数百台机器上运行。它们并不是为了在一台计算机上并行计算而设计的。此外,Flink 针对的是大规模问题。在本地计算机上以秒为单位运行的作业并不是 Flink 的主要用例。
并行化应用程序总是会产生开销。数据必须在进程和线程之间分布和共享。Flink 通过序列化和反序列化来跨 TaskManager 槽分布数据。此外,启动和协调分布式任务也不是免费的。
当在单台机器上使用分布式系统扩展小规模问题时,观察到更长的执行时间并不奇怪。您可以将应用程序移植到利用共享内存的线程并行应用程序。
| 归档时间: |
|
| 查看次数: |
749 次 |
| 最近记录: |