,我正在寻找一个集群程序,我可以并行计算作业。,我看了looked集群和Hadoop。使用run集群的问题是,它需要Unix中的脚本并行运行计算。但是,我想要做的是用Java本身将作业发送给工人,这样工人就可以计算它们并返回值。这是因为我的工作是由许多不同的用户决定的,您不能在运行作业之前编写脚本。而且,使用Hadoop的问题是它使用了Map-还原工具,但我认为我的Java工作并没有从Map-reduce方案中受益。
我想要的很简单。我希望将作业发送给工人(其他计算机节点)并接收结果。我发送给工人的所有工作都将是独立的(因此,我不必担心依赖关系)。(简单的工作)另外,我希望在Java本身中实现这些并行化。当我向调度器发送多个作业时,希望调度器设置队列,并自动将一些作业发送到可用节点并将结果返回给用户。
为了得到更好的解释,让我举一个例子。假设有一个user1正在使用Java。他正在他的电脑里用main()做三次计算。下面是他的密码。
公共级乘法{
public static void main(String[] args){
Multiplecal calobj= new Multiplecal();
int result1, result2, result3;
result1=calobj.addtwo(5);
result2=calobj.addthree(6);
result3=calobj.addfour(7);
}
public int addtwo(int n){
return (n+(n-1));
}
public int addthree(int n){
return (n+(n-1)+(n-2));
}
public int addfour(int n){
return (n+(n-1)+(n-2)+(n-3));
}}`
然而,user1希望通过使用一些集群程序来获得result1、result2、result3。如果存在一个名为服务的API,那么他的主()代码可能如下所示。
*进口服务;
公共级乘法{
public static void main(String[] args){
Multiplecal calobj= new Multiplecal();
int result1, result2, result3;
result1=service.send("Multiplecal", "addtwo", 5);
result2=service.send("Multiplecal", "addthree", 6);
result3=service.send("Multiplecal", "addfour", 7);
}……}`
服务API将向并行程序管理器发送每个(类名、方法名和输入参数)。然后并行程序管理器将这些作业分配给节点(工人)。因为工作人员已经有了Multiplecal类,所以他们可以通过匹配从服务API发送的类和方法来获得结果。当工人完成工作后,他们会将结果返回给user1。
我上面提到的只是我想要做的事情的大画面。并行化的参数格式不必像上面那样。如果您知道一个很好的软件可以设置集群和并行化,请给我您宝贵的建议。
谢谢
发布于 2013-08-29 18:16:03
有许多网格计算/集群中间件。您可能想看看JPPF (主/工作者)、GridGain(地图/减少)或HTCondor
https://stackoverflow.com/questions/18502810
复制相似问题