一、是什么构成一个可运行的topology?web
worker processes(worker进程),executors(线程)和tasks。工具
一台Storm集群里面的机器可能运行一个或多个worker进程,一个worker进程运行一个特定topology的executors。ui
一个worker进程可能运行一个或多个executors。每一个executor是一个线程。一个executor运行同一个spout或者bolt的一个或多个task。线程
一个task完成具体的数据处理。code
一个worker进程执行一个topology的子集。一个worker进程属于一个指定topology而且能够运行属于一个topology的一个或多个executors。一个topology由不少这样的worker进程运行在Storm集群的不少机器上。orm
一个task完成具体的数据处理—一个组件的任务数在整个topology的生命周期内是不变的,可是一个组件的executors数量在topology的生命周期内是能够变的。#threads <= #tasks。默认状况下,tasks的数量被设置成与executors的数量相等。 Storm将会在每一个executor里面运行一个task。生命周期
二、配置一个topology的parallelism。进程
Storm里面的"parallelism"指parallelism hint, 它表明一个组件的executor的初始数量。io
worker进程的数量:一个topology拥有的worker进程的数量。配置文件里面设置:TOPOLOGY_WORKERS 代码里面设置:Config#setNumWorkersclass
executors的数量:每一个组件拥有的executors数量。 代码里面配置:TopologyBuilder#setSpout() TopologyBuilder#setBolt() parallelism_hint指出一个组件的初始executors的数量。
tasks的数量:每一个组件建立多少task。 配置文件里面配置:TOPOLOGY_TASKS 代码里面配置:ConponentConfigurationDeclare#setNumTasks()。
另外,TOPOLOGY_MAX_TASKS_PARALLELISM限定了单个组件能够产生的executors的最大数量。
三、改变一个topology的parallelism。
rebalanceing:这是Storm的一个漂亮的特性。worker进程的数量和executor的数量能够动态增长或减小,而不须要重启集群或者重启topology。
两种方式:一、用Storm web UI 二、CLI工具
## Reconfigure the topology "mytopology" to use 5 worker processes, ## the spout "blue-spout" to use 3 executors and ## the bolt "yellow-bolt" to use 10 executors. $ storm rebalance mytopology -n 5 -e blue-spout=3 -e yellow-bolt=10