如何解释风暴的并行性?

时间:2016-03-14 16:34:35

标签: 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.setWorkerNum(2);

存在2个工作进程,每个进程由拓扑组成,即1个喷口,5个工作螺栓和1个聚合器螺栓。

  

Q1。总共我有2个喷口,10个工人螺栓和2个聚合器螺栓。这是对的吗?

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

  

Q2。如果我想更改工作螺栓的实例数,我应该更改topoBuilder.setBolt("worker", new WorkerBolt(), 20);,还是应该更改conf.setWorkerNum(4);

1 个答案:

答案 0 :(得分:3)

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

Q1。没有。设置numWorkers AKA" topology.workers"决定拓扑将在群集中分配多少个工作进程(插槽)。您的螺栓将在所有插槽之间分配。因此,您将在2个工作进程中分布1个spout实例,5个工作螺栓实例和1个聚合器螺栓实例。在Storm文档中,实例称为tasks

Q2。第一种选择。

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

相关问题