我和Storm一起玩。这是我使用的拓扑:
builder.setSpout("word", new RandomSentenceSpout(), 3);
builder.setBolt("exclaim1", new ExclamationBolt(), 6).shuffleGrouping("word");
我认为Storm会为这种拓扑产生9个执行器(3个喷口+ 6个螺栓),但是当我实际运行它时,我可以看到11个执行器正在运行。
那两个额外的执行者是什么?
答案 0 :(得分:2)
它们是acker bolt,负责管理确认机制。 拓扑中有2个acker,默认情况下每个bolt任务都是一个执行器。
storm使用acker作为bolt任务(执行程序),如果我们不设置ackers数,它将在拓扑中运行其中一些。如果要准确管理执行程序的数量,请使用以下命令:
Config conf = new Config();
conf.setNumAckers(1);
答案 1 :(得分:0)
您是否在拓扑中的其他位置设置numTasks?共享拓扑创建代码应该有助于回答。另外,你是在本地或群集模式下运行吗? 执行者总是小于或等于NumTasks。 http://www.michael-noll.com/blog/2012/10/16/understanding-the-parallelism-of-a-storm-topology/这篇博客很好地解释了风暴中的并行性。