有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    我认为你是想作为一名主管作为一名工作执行者。事实并非如此。 Nimbus、supervisor、zookeeper都是守护进程。他们不是真正的工作执行者

    喷口和螺栓是在JVM中运行的真正执行器。因此,如果你想按照0-99所提到的分工。。等您必须在一个螺栓上使用字段分组拆分流,并将流发送到三个螺栓

    另外一个信息主管将负责运行workers(JVM)