Java 如何解读暴风雪';什么是平行性?

Java 如何解读暴风雪';什么是平行性?,java,apache-storm,Java,Apache Storm,我是Apache Storm的新手,对并行性问题感到困惑 想象一个拓扑,其中有1个喷口、8个辅助螺栓和1个聚合器螺栓 当我使用 topoBuilder.setSpout("spout", new Spout(), 1); topoBuilder.setBolt("worker", new WorkerBolt(), 5); topoBuilder.setBolt("aggregator", new AggregatorBolt(), 1); 拓扑已经设置好,如果我使用 conf.setWork

我是Apache Storm的新手,对并行性问题感到困惑

想象一个拓扑,其中有1个喷口、8个辅助螺栓和1个聚合器螺栓

当我使用

topoBuilder.setSpout("spout", new Spout(), 1);
topoBuilder.setBolt("worker", new WorkerBolt(), 5);
topoBuilder.setBolt("aggregator", new AggregatorBolt(), 1);
拓扑已经设置好,如果我使用

conf.setWorkerNum(2);
存在2个工作进程,每个进程由一个拓扑组成,即1个喷口、5个工作螺栓和1个聚合器螺栓

问题1。所以我总共有2个喷嘴,10个工人螺栓和2个聚合器螺栓。对吗

我试图测量一种分组方法,工作螺栓的实例数量对结果有很大影响

问题2。如果要更改辅助螺栓的实例数,只需更改
topoBuilder.setBolt(“worker”,new WorkerBolt(),20),或者我应该更改
conf.setWorkerNum(4)


免责声明-我也是一个新手,但我会根据我对Storm ATM的理解来回答

问题1。否。设置
numWorkers
AKA“topology.workers”决定拓扑将在集群中分配多少工作进程(插槽)。您的螺栓将在所有插槽之间分开。因此,您将有1个喷口实例、5个辅助螺栓实例和1个聚合器螺栓实例分布在2个辅助进程上。实例在Storm文档中称为
tasks

问题2。第一种选择


值得一提的是,还有另一个参数,
builder.setBolt(…).setNumTasks(x)
。这将控制螺栓/喷嘴的实例数。默认情况下,这将等于parallelism_hint指定的执行器(线程)数量,但如果您希望有一些空间来扩展拓扑,则任务计数可以高于执行器计数。

类似的问题,请参见我的回答