storm的topology结构
Storm定义了三种不同维度的组件来共同维持topology的运行,他们是
- worker
- executor(thread)
- task
上图已经把互相之间的关系表述的非常清楚了,这里再补充一个简单的算数关系:
Task的数量 ≥ Executor的数量≥Worker的数量≥topology的数量
在代码中修改topology的并行参数
下面介绍下如何在代码中配置上述的几个参数。
Worker
首先这是一个Topology的参数,所以显然应该到Config中找,有这个Config.setNumWorkers()方法可用。
Executor
通过TopologyBuilder.setSpout() 和TopologyBuilder.setBolt() 的parallelism_hint参数来设置。
Task
通过ComponentConfigurationDeclarer.setNumTasks()
动态修改topology的并行参数
除了在代码中指定上述的参数之外,还可以动态对他们进行配置而不用重启整个集群。要这么做,需要用到CLI工具。
下面是使用CLI的一个简单例子
## 指定mytopology使用5个worker进程
## 指定blue-spout使用3个executor
## 指定yello-bolt使用10个Executor
$ storm rebalance mytopology -n 5 -e blue-spout=3 -e yellow-bolt=10