首页 > 代码库 > Storm系列之一——Storm Topology并发

Storm系列之一——Storm Topology并发

1、是什么构成一个可运行的topology?

    worker processes(worker进程),executors(线程)和tasks。

    一台Storm集群里面的机器可能运行一个或多个worker进程,一个worker进程运行一个特定topology的executors。

    一个worker进程可能运行一个或多个executors。每个executor是一个线程。一个executor运行同一个spout或者bolt的一个或多个task。

    一个task完成具体的数据处理。

    一个worker进程执行一个topology的子集。一个worker进程属于一个指定topology并且可以运行属于一个topology的一个或多个executors。一个topology由很多这样的worker进程运行在Storm集群的很多机器上。

    一个task完成具体的数据处理—一个组件的任务数在整个topology的生命周期内是不变的,但是一个组件的executors数量在topology的生命周期内是可以变的。#threads <= #tasks。默认情况下,tasks的数量被设置成与executors的数量相等。 Storm将会在每个executor里面运行一个task。

2、配置一个topology的parallelism。

    Storm里面的"parallelism"指parallelism hint, 它代表一个组件的executor的初始数量。

    worker进程的数量:一个topology拥有的worker进程的数量。配置文件里面设置:TOPOLOGY_WORKERS  代码里面设置:Config#setNumWorkers

    executors的数量:每个组件拥有的executors数量。 代码里面配置:TopologyBuilder#setSpout()   TopologyBuilder#setBolt()                             parallelism_hint指出一个组件的初始executors的数量。

    tasks的数量:每个组件创建多少task。  配置文件里面配置:TOPOLOGY_TASKS       代码里面配置:ConponentConfigurationDeclare#setNumTasks()。

 

    另外,TOPOLOGY_MAX_TASKS_PARALLELISM限定了单个组件可以产生的executors的最大数量。

3、改变一个topology的parallelism。

     rebalanceing:这是Storm的一个漂亮的特性。worker进程的数量和executor的数量可以动态增加或减少,而不需要重启集群或者重启topology。

     两种方式:1、用Storm web UI       2、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

 

Storm系列之一——Storm Topology并发