我有一个带有一个TaskManager和两个处理槽的Apache Flink设置。当我执行一个并行度设置为1的应用程序时,该作业大约需要33秒才能执行。当我将并行度增加到2时,作业需要45秒才能完成。
我在我的Windows机器上使用Flink,配置为10个计算核心(4C+ 6G)。我想获得更好的结果与2个插槽。我能做什么?
发布于 2018-02-26 18:53:45
像Apache Flink这样的分布式系统被设计为在数百台机器上的数据中心运行。它们不是为在一台计算机上并行计算而设计的。此外,Flink针对的是大规模问题。在本地计算机上数秒内运行的作业不是Flink的主要使用情形。
并行化应用程序总是会带来开销。数据必须在进程和线程之间分发和共享。Flink通过序列化和反序列化跨TaskManager插槽分发数据。此外,启动和协调分布式任务也不是免费的。
在单台机器上扩展分布式系统的小规模问题时,观察到较长的执行时间并不奇怪。您可以将应用程序移植到利用共享内存的线程并行应用程序。
https://stackoverflow.com/questions/48986523
复制相似问题