如何将应用程序的工作分配到Apache Spark中的工作节点上

时间:2016-07-18 17:20:02

标签: apache-spark distributed-computing worker

我有一个读取文件的应用程序进行一些计算并在驱动程序机器中生成输出文件。现在,当我在机器A上使用奴隶运行它需要6分钟。如果我在机器B上再添加一个从属设备到同一个集群并运行驱动程序,则需要13分钟(几乎没有找到主机B的路由)。我相信这是由于网络延迟延迟造成的。 2名工人的最少时间总是高于1名工人。那么我认为,应用程序的工作并没有以分布式方式执行。两个奴隶都在独立完成整个工作。两个从站都将输入文件作为一个整体读取并创建RDD并发送给驱动程序以进行输出。我想知道Apache Spark的分布式计算在哪里? 我有一个小字数统计程序,它只进行计算而不涉及文件I / O,如果我用一个包含多个工作节点的巨大文件运行它,我看到执行时间随着工作者的增加而减少。 我想知道每个工作者是否读取完整文件并创建RDD并且程序中没有发生分布式工作?

非常感谢。

- 使用各种工作节点编辑PFA屏幕截图。对应的彩色矩形表示执行输出。我想知道为什么增加更多工人会延迟执行时间。我在日志中看到没有主机异常的路由,但是当我删除任何一个worker时它为什么不来。有什么指针吗? - 提前致谢。http://www.chartjs.org/docs/#chart-configuration-creating-a-chart-with-options

1 个答案:

答案 0 :(得分:1)

你拿了一个小数据集,把它放在一个没有分发的文件系统上,并通过一个设计用来运行数百个节点的引擎来运行它 - 会出现什么问题?

协调许多计算机上的进程需要大量的协调,来回发送数据,序列化和反序列化等。如果你不能以任何其他方式运行解决方案,那么开销是可以接受的,但如果你在小的东西上运行它你比开始解决问题的时间更容易受到开销的影响