0

将工作分配给一组远程机器的好方法是什么?考虑一个示例,其中任务非常占用 CPU 和 RAM,但实际上并不处理大型数据集。选择的语言是Java。我在想 Hadoop 会是一个不错的选择,但是在远程机器之间传递的数据集相当小,而且 Hadoop 似乎主要关注数据的分布而不是工作的分布。

有哪些好的技术可以提供帮助?

编辑:我主要对负载平衡感兴趣。将有一系列作业的数据集很小(< 3MB),但需要大量的处理和内存。

4

2 回答 2

3

MPI可能是一个不错的选择,甚至还有一个 JAVA实现

于 2009-11-11T00:23:35.150 回答
1

MPI 可能是您答案的一部分,但看看这个问题,我不确定它是否解决了您关心的问题部分。

MPI 提供处理组件之间的通信层。它是低级的,需要你做大量的工作,但从我在介绍演示中看到的,它还带有一些常见的矩阵数据操作功能。

在您的问题中,您似乎对问题的负载平衡/作业处理方面更感兴趣。如果这确实是您的重点,那么托管在 Servlet 或 RMI 服务器中的小程序可能就足够了。让每个程序转到服务器进行下一个工作单元,然后将结果提交回来(您甚至可以使用数据库/文件共享,但要注意锁定问题)。换句话说,拉机制与推机制。

这种方法实现起来相当简单,并为您提供了通过运行更多分布式客户端进行扩展的优势。如果您打算让您的进程完全控制机器,那么负载平衡并不是很重要。您可以尝试在具有多个内核的机器上运行多个客户端,看看是否可以提高节点的整体吞吐量。多线程客户端会更有效,但可能会增加复杂性,具体取决于您用于解决问题的代码结构。

于 2009-11-15T13:30:29.787 回答