Woker
storm的一个拓扑任务可能有一个或多个woker,一个worker代表一个线程,但是一个拓扑任务中woker的最大数据量是有限制的,max( number of worker)=number of supervisor X ports of slots。 例如如果你有四个 supervisor,设置 slots的端口为 6700,6701,6702,6703 则worker最多有16个,代码中可通过 conf.setNumWorkers(num)设置,num 不能超过最大值。
Executor
一个executor是一个进程,一个executor只能对应一个 worker,一个worker可以有多个进程,每个进程只能处理一个woker里面的一个组件(spout/blot),每个组件可能会对应多个task,每个executor也可以处理多个task,但是一个task只对应一个进程。默认情况下,一个executor对应一个task,但是在代码中我们可以通过 toplogy.builder.setBlot("name of bolt",Class of Blot,num of excutors).setNumTasks( num of tasks) 来设置对应的参数
动态设置拓扑并发度
建议使用使用Storm rebalance命令,不需要重提服务,执行一下命令
storm reblance mytoplogy -n 5 -e bolt1 3 -e bolt2 5 #设置5个worker,bolt1 3个executor,bolt2 5个executor