一台物理机,运行多个拓扑。具体说就是,运行多个进程,每一个进程仅属于一个拓扑。
worker(工作进程) 是进程。
executor(执行器)是线程。
执行器运行着多个任务( task),但执行器只能执行一类组件,要么是spout要么是bolt。
组件的任务就是task,每一个bolt就相当于多个task。
eg:一个线程运行着 training-bolt的多个task,但默认是1线程1task。一个bolt的task数量在运行过程中是一定的,但是一个组件的线程数可以改变。
parallelism_hint表示:一个bolt的线程(executor)数量。
一些相关代码
Config.setNumWorkers(10); //一个拓扑有多少个分布于集群中的进程。 builder.setBolt(); //第三个参数就是parallelism-hint topologyBuilder.setBolt("green-bolt", new GreenBolt(), 2).setNumTasks(4).shuffleGrouping("blue-spout);//GreenBolt指定了初始有2个executor和4个关连的task。Storm会在每个 executor(线程)2个task。
原文:http://my.oschina.net/supersonic/blog/499309