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

How application 's work is distributed on to worker nodes in Apache Spark

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

非常感谢。

--编辑 PFA 各种工作节点的屏幕截图。相应的彩色矩形显示了执行输出。我想知道为什么增加更多的工人会延迟执行时间。我在日志中看到 No route to host exception at time ,但是为什么当我删除任何一个 worker 时它没有出现。任何指针? -- 提前致谢。

你拿了一个小数据集,把它放在一个非分布式的文件系统上,然后 运行 通过一个设计用于 运行 有数百个节点的引擎 - 会出什么问题?

在很多计算机上协调进程需要大量协调,来回发送数据,序列化和反序列化等。如果您不能 运行 任何其他方式的解决方案,开销是可以接受的,但如果你 运行 它在一些小的事情上与解决问题所花费的时间相比,你受到开销的影响更大