2013年第一天在线等待求助...
我要用java Swing做一个桌面应用软件,其中一个功能是分析大量数据。假设每次需要分析的数据大小约为几G,自己的一台计算机完成这个计算耗时太多,故想实现简单的并行计算功能,即利用局域网(局域网很小,比如就是一个办公室,共有5台个人PC组成的局域网)内其他电脑并分配计算任务给它们,最终返回计算结果。为了能与其他电脑通信,其他电脑中也安装该软件。分析数据时,处理数据的规则是固定的,其它电脑总是用需要执行完全相同的运算过程,而不是经常变化的。每个处理片段数据之间不存在依赖关系。
java RMI可以实现简单的分布式计算,但是我想使用某个成熟的框架来实现,现在的问题就是,选用何种方式来实现?我查阅了相关的资料,下面是对各种可能方案的分析:
[1] MPI
MPI传输数据和通信问题比较难解决;java 对MPI支持不足,java的一个框架实现MPJ Express(http://mpj-express.org/index.html)不太成熟,用户量不大。
[2] MapReduce
MapReduce支持处理T级数据量,其实现Hadoop 基于分布式文件系统,感觉它对于该软件来说有些复杂。
[3] 网格计算
其java实现框架有GridGain(http://www.gridgain.com/) 和JPPF(http://www.jppf.org/)。
请问各位,上述三个解决方案中哪一个可以更适合的解决这个问题?是不是有其他更合适的解决方案和框架呢?