我正在尝试使用 Java 和 Windows 操作系统实现集群计算系统。我正在寻找一个解决方案
- 并不过时
- 相当容易安装和设置
- 有足够的文档可以在没有 MPI 知识的情况下开始使用类和方法
- 至少有点用户友好
这可能是不可能的,但如果它在使用上有点接近 Java Concurrent 框架,那就太好了。
我最初了解了一些关于 Java Concurrent 包的知识,并且很容易学会在我的本地 8 核机器上使用 Runnable 接口和 ExecutorService 编写并行程序,从而使我的所有类在此过程中都是线程安全的。但是,我还没有找到一种标准机制来将此编程框架扩展到集群。
然后我了解到了一个名为 Java-Interop-Library ( https://github.com/MicrosoftHPC/Java-Interop-Library ) 的 GitHub 项目,它可以与 Microsoft HPC Pack 一起使用。我通过 Amazon EC2 将几台云计算机联网并安装了 HPC Pack。Java-Interop-Library 是编译和设置的噩梦。我不得不手动编辑几个批处理文件,甚至一些 Java 代码来编译它。当我大部分工作(但不是全部)时,我刚刚开始认为必须有一种更简单的方法,然后我再次开始搜索。
我的新搜索将我引向 MPJ-Express ( http://mpj-express.org )。我通读了网站上的文档,似乎很容易设置。他们甚至有关于如何将其与 Eclipse 集成和调试的文档。但是,我永远找不到关于如何实际使用类和方法的任何文档(有一个简单的 hello world 示例,但还不够接近)。
更多搜索使我找到了 MPIJava、Hadoop 和 GridGain。由于没有使用 MPI 或 MPJ 的经验,并且知道 MPJ 是从 MPIJava 发展而来的,因此我开始尝试寻找相关文档。我找到了一些文档,但其中一些已经很老了,我不确定我是否走在正确的轨道上。我在另一个 StackOverflow 帖子上看到了 GridGain 的提及,并访问了他们的网站。他们似乎有一个集群计算框架,一个简单的发布示例甚至使用了似乎是使用 Runnable 对象的类,这对我来说似乎很有吸引力,因为我有一些 Java Concurrent 框架的经验。我对Hadoop一无所知,除了它可能是一种可能性。
我真的只需要一些更好的方向来完成 Java 中的集群计算的最佳方式。我觉得我只是在旋转我的轮子。