/** * mytopology拓扑的描述如下: * 拓扑将使用两个工作进程(Worker) * Spout是id为bule-spout,并行度为2的BlueSpout实例(产生两个执行器和两个任务) * 第一个 Bolt是id为green-bolt,并行度为2,任务数为4, * 使用随机分组方式接收blue-spout所发射元祖的GreenBolt实例(产生2个执行器和4个任务) * 第二个Bolt是id为yellow-bolt,并行度为6,使用随机分组方式接收green-bolt所发射元祖的YellowBolt实例(产生6个执行器和6个任务) * * 拓扑将使用两个工作进程(conf.setNumWorkers (2);) * 2+2+6=10个执行器(executor),2+4+6=12个任务 * 10/2=5个执行器,12/2=6个任务 * 默认情况下,一个执行器执行一个任务,如果指定了任务数,则任务会平均分配到执行器中 * * */ public class Demo01 { public static void main(String[] args) throws AlreadyAliveException, InvalidTopologyException { TopologyBuilder builder = new TopologyBuilder (); Config conf = new Config (); //使用两个工作进程0 conf.setNumWorkers (2); //设置并行度为2 builder.setSpout ("bule-spout",new BuleSpout(),2); BoltDeclarer boltDeclarer = builder.setBolt ("green-bolt", new GreenBolt (), 2) .setNumTasks (4)//设置4个任务 .shuffleGrouping ("blue-spout");//随机分组 ,随机派发stream里面的tuple,保证每个bolt接收到的tuple数目大致相同。 builder.setBolt ("yellow-bolt",new YellowBolt(),6) .shuffleGrouping ("green-bolt"); StormSubmitter.submitTopology ( "mytopology", conf, builder.createTopology () ); }
Storm拓扑
最新推荐文章于 2021-08-01 22:43:43 发布