ApacheStorm中的java并行性和告诉主管该怎么做
我是一个apache storm的初学者,试图编写一个基本程序。我建立了一个风暴群,有3名监督员。我试图编写的程序是这样的:一个主管将0-99相加,另一个主管将100-199相加,第三个主管将200-299相加,然后将它们推回到nimbus,在nimbus中,每个总数相加,然后输出到一个文件中。我该如何制作这些循环中的每一个,将数字相加,将不同的工作分配给不同的主管?下面是我目前的代码,但我不明白我写的代码中的storm如何以不同的方式发送作业
import backtype.storm.Config;
import backtype.storm.LocalCluster;
import backtype.storm.StormSubmitter;
import backtype.storm.task.OutputCollector;
import backtype.storm.task.TopologyContext;
import backtype.storm.testing.TestWordSpout;
import backtype.storm.topology.OutputFieldsDeclarer;
import backtype.storm.topology.TopologyBuilder;
import backtype.storm.topology.base.BaseRichBolt;
import backtype.storm.tuple.Fields;
import backtype.storm.tuple.Tuple;
import backtype.storm.tuple.Values;
import backtype.storm.utils.Utils;
import java.util.Map;
public class AddNumMain{
public class addNumBolt{
public int a = 0, b = 0, c = 0, total = 0;
public int addNums1(){
for(int i = 0; i < 99; i++) // job 1
a += i;
return a;
}
public int addNums2(){
for(int j = 100; j < 199; j++) // job 2
b += j;
return b;
}
public int addNums3(){
for(int t = 200; t < 299; jt++) // job 3
c += t;
return c;
}
public int total(){
total = a + b + c;
return total;
}
}
public static void main(){
TopologyBuilder builder = new TopologyBuilder();
Config conf = new Config();
conf.setDebug(true);
conf.setNumWorkers(3);
StormSubmitter.submitTopologyWithProgressBar(args[0], conf, builder.createTopology());
LocalCluster cluster = new LocalCluster();
cluser.submitTopology("myTopology", comf, builder.createTopology()); // need to add parameters
Utils.sleep(10000); //runs for 10 seconds before shutting cluster down
cluster.killTopology("myTopology");
cluster.shutdown();
}
}
# 1 楼答案
我认为你是想作为一名主管作为一名工作执行者。事实并非如此。 Nimbus、supervisor、zookeeper都是守护进程。他们不是真正的工作执行者
喷口和螺栓是在JVM中运行的真正执行器。因此,如果你想按照0-99所提到的分工。。等您必须在一个螺栓上使用字段分组拆分流,并将流发送到三个螺栓
另外一个信息主管将负责运行workers(JVM)