代码之家  ›  专栏  ›  技术社区  ›  Ranjan

为什么Apache Flink应用程序的并行执行比顺序执行慢?

  •  1
  • Ranjan  · 技术社区  · 6 年前

    我有一个Apache Flink设置,有一个TaskManager和两个处理插槽。当我执行一个并行度设置为1的应用程序时,执行作业大约需要33秒。当我将并行度增加到2时,作业需要45秒才能完成。

    我正在Windows机器上使用Flink,配置为10个计算核(4C+6G)。我想用2个插槽获得更好的结果。我能做什么?

    1 回复  |  直到 6 年前
        1
  •  4
  •   Fabian Hueske    6 年前

    像Apache Flink这样的分布式系统设计用于在数百台机器上的数据中心中运行。它们不是为在一台计算机上并行计算而设计的。此外,弗林克针对的是大规模问题。在本地计算机上以秒为单位运行的作业不是Flink的主要用例。

    并行化应用程序总是会导致开销。数据必须在进程和线程之间分布和共享。Flink通过序列化和反序列化跨TaskManager插槽分发数据。此外,启动和协调分布式任务也不是免费的。

    在单机上使用分布式系统扩展小规模问题时,观察更长的执行时间并不奇怪。您可以将应用程序移植到利用共享内存的线程并行应用程序。