Hello,
I am trying to control my cluster's parallelism and I want to achieve the
following: 1 worker per component, and 1 executioner per worker and 1 task
per executioner. In order to achieve the former, I submit my components to
the topology as follows:
Config conf = new Config();
TopologyBuilder builder = new TopologyBuilder();
builder.setSpout("spout_1",
new GreenSpout(), 1)
.setNumTasks(1);
builder.setBolt("bolt_1",
new GreenBolt(), 1)
.setNumTasks(1)
.directGrouping("spout_1");
builder.setBolt("bolt_2",
new RedBolt(), 1)
.setNumTasks(1)
.directGrouping("bolt_1");
builder.setBolt("bolt_3",
new YellowBolt(), 1)
.setNumTasks(1)
.directGrouping("bolt_2");
conf.setDebug(true);
conf.setNumWorkers(4);
StormSubmitter.submitTopology("experimental-top", conf,
builder.createTopology());
The above not only sets the parallelism hint (executioner threads per
worker) to 1, but also the number of workers per component to 1. However,
when I submit my topology, and I perform a storm list, I can see that I
have 4 workers and 8 tasks running. Is this normal? My goal is to have each
component executed by 1 thread on each machine. Am I missing something?
Thanks,
Nick
--
Nikolaos Romanos Katsipoulakis,
University of Pittsburgh, PhD candidate