Storm中worker, executor,task之间的关系:

worker即进程,一个worker就是一个进程,进程里面包含一个或多个线程,一个线程就是一个executor,一个线程会处理一个或多个任务,一个任务就是一个task,一个task就是一个节点类的实例对象。

storm集群的一个节点可能有一个或者多个工作进程(worker)运行在一个多个拓扑上,一个工作进程执行拓扑的一个子集。工作进程(worker)属于一个特定的拓扑,并可能为这个拓扑的一个或者多个组件(spout/bolt)运行一个或多个执行器(executor线程)。一个运行中的拓扑包括多个运行在storm集群内多个节点的进程。

1worker进程执行的是1topology的子集(注:不会出现1worker为多个topology服务)。1worker进程会启动1个或多个executor线程来执行1topologycomponent(spoutbolt)。因此,1个运行中的topology就是由集群中多台物理机上的多个worker进程组成的。

executor1个被worker进程启动的单独线程。每个executor只会运行1topology1component(spoutbolt)task(注:task可以是1个或多个,storm默认是1component只生成1taskexecutor线程里会在每次循环里顺序调用所有task实例)。

task是最终运行spoutbolt中代码的单元(注:1task即为spoutbolt1个实例,executor线程在执行期间会调用该tasknextTupleexecute方法)。topology启动后,1component(spoutbolt)task数目是固定不变的,但该component使用的executor线程数可以动态调整(例如:1executor线程可以执行该component1个或多个task实例)。这意味着,对于1component存在这样的条件:#threads<=#tasks(即:线程数小于等于task数目)。默认情况下task的数目等于executor线程数目,即1executor线程只运行1task

      配置拓扑的并行度:1、工作进程的数量,表示集群中不同节点的拓扑可以创建多少个工作进程。配置参数:TOPOLOGY_WRKERS 2、执行器(线程)的数量:指的是每个组件产生多少个线程。配置参数setSpout()setBolt()3、任务的数量,表示每个组件创建多少个任务。配置参数:TOPOLOGY_TASKS

拓扑示例

下面我们定义一个名为mytopology的拓扑,由一个Spout组件(BlueSpout)、两个Bolt组件(GreenBoltYellowBolt)共三个组件构成,代码如下:

mytopology拓扑的描述如下:

1、拓扑将使用两个工作进程(Worker)

2Spoutid为“blue-spout”、并行度为2BlueSpout实例(产生两个执行器和两个任务)

3、第一个Boltid"green-bolt"、并行度为2、任务数为4、使用随机分组方式接收"blue-spout"所发射元组的GreenBolt实例(产生两个执行器和4个任务)

4、第二个Boltid"yellow-bolt"、并行度为6、使用随机分组方式接收"green-bolt"所发射元组的YellowBolt实例(产生6个执行器和6个任务)

综上所述,该拓扑一共有两个工作进程(Worker)2+2+6=10个执行器(Executor)2+4+6=12个任务。因此,每个工作进程可以分配到10/2=5个执行器,12/2=6个任务。默认情况下,一个执行器执行一个任务,但是如果指定了任务的数目,则任务会平均分配到执行器中,因此,GreenBolt的实例"green-bolt"的一个执行器将会分配到4/2个任务。

mytopology的拓扑及其对应的资源分配如下图所示:


动态设置拓扑的并发度

Storm支持在不重启topology的情况下,动态的改变(增减)worker process的数目和executor的数目,称为rebalancing。有两种方式可以实现拓扑的再平衡:

1、使用Storm Web UI

2、使用Storm rebalance命令(推荐使用)

使用命令行的方式如下:

注:"mytopology"是拓扑的名称,"blue-spout""yellow-bolt"是组件的名称。


  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值