0

一般来说,我对 Spark 和 Hadoop 类型的东西完全陌生,所以如果这是一个令人痛苦的基本问题,请原谅我。我正在尝试设计一个系统,该系统将利用一些机器的集群来执行一系列任务中的第一个任务。在第一个任务生成的 RDD 上运行的后续任务必须全部在同一台机器上完成。这可以是集群中的任何机器,只要它在程序运行期间始终是该机器。

我如何确保发生这种情况?我可以在集群中保留一台机器并始终在该机器上运行后续任务吗?如果是这样,那在 Java 中看起来如何?如果没有,还有其他方法可以做到这一点吗?

4

1 回答 1

0

一般来说,没有。Spark 与 Hadoop 一样,旨在或多或少任意地在可用节点上分配任务,并假设所有可用节点对其目的都是等效的。他们都不会受到特殊对待。

如果您不希望进程的后半部分以(或多或少)大规模并行方式运行,那么您可能不希望对这半部分工作使用并行处理框架。也许您应该将并行计算中的所有数据写入某个地方的磁盘,然后在数据上运行作业的后半部分,而不是作为 Spark RDD 转换,而是作为读取文件并处理它们的普通 Scala 代码。很难说。

为什么所有的“后续任务”都需要在一个特定的地方运行?如果你能解释更多关于这个需求,也许有人可以为你提出好的建议。

于 2014-10-19T01:31:42.513 回答