需要建议!java集群程序?

zyfwsgd6  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(301)

我正在寻找一个集群程序,我可以计算并行java作业。我看了rockscluster和hadoop。使用rockscluster的问题是它需要unix中的脚本并行运行计算。然而,我想做的是用java本身将作业发送给worker,以便worker计算它们并返回值。这是因为我的作业由许多不同的用户决定,在运行作业之前不能编写脚本。另外,使用hadoop的问题是它使用map reduce工具,但我认为我的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。如果存在一个名为service的api,那么他的main()代码可能如下所示。 进口服务。*;公共类多重{

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将每个(类名称、方法名称和输入参数)发送到并行程序管理器。然后并行程序管理器将这些作业分配给节点(worker)。由于worker已经有多个类,所以他们可以通过匹配从服务api发送的类和方法来获得结果。工作人员完成工作后,会将结果返回给user1。
我上面提到的只是我正在努力做的事情的一个大局图。并行化的参数格式不必像上面那样。如果你知道一个很好的软件可以设置集群和并行java作业,请给我你的宝贵建议。
谢谢

zsohkypk

zsohkypk1#

现在有很多网格计算/集群中间件。您可能想看看jppf(master/worker)、gridgain(map/reduce)或htcondor

相关问题