码迷,mamicode.com
首页 > 其他好文 > 详细

Storm并发度

时间:2015-12-25 13:33:31      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:

并发度

一个Topology可以包含一个或多个worker(并行的跑在不同的machine上), 所以worker process就是执行一个topology的子集, 并且worker只能对应于一个top  ology

一个worker可用包含一个或多个executor, 每个component (spout或bolt)至少对应于一个executor, 所以可以说executor执行一个compenent的子集, 同时一个executor只能对应于一个component

Task就是具体的处理逻辑对象, 一个executor线程可以执行一个或多个tasks

但一般默认每个executor只执行一个task, 所以我们往往认为task就是执行线程, 其实不是。

task代表最大并发度, 一个component的task数是不会改变的, 但是一个componet的executer数目是会发生变化的(storm rebalance命令),

task数>=executor数, executor数代表实际并发数 

技术分享

task代表最大并发度, builder.setBolt("bolt", new MyBolt(),1).setNumTasks(2).directGrouping("spout");

executor数代表实际并发数 ,实际并发数还是1

最大并发度为2

左边两个task是独立的

右边包含两个task,表示一个execute

通常不用理会task,只设置execute

 

技术分享

Config conf = new Config();
conf.setNumWorkers(2); 

topologyBuilder.setSpout("blue-spout", new BlueSpout(), 2); 

topologyBuilder.setBolt("green-bolt", new GreenBolt(), 2) 
               .setNumTasks(4) 
.shuffleGrouping("blue-spout");

topologyBuilder.setBolt("yellow-bolt", new YellowBolt(), 6)
               .shuffleGrouping("green-bolt");

StormSubmitter.submitTopology(
        "mytopology",
        conf,
    topologyBuilder.createTopology()
    );

 

通过setBolt和setSpout一共定义2+2+6=10个executor threads 
并且同setNumWorkers设置2个workers, 所以storm会平均在每个worker上run 5个executors
而对于green-bolt, 定义了4个tasks, 所以每个executor中有2个tasks

 

 

动态设置并发度
Storm支持在不restart topology的情况下, 动态的改变(增减)worker processes的数目和executors的数目, 称为rebalancing. 通过Storm web UI, 或者通过storm rebalance命令

# 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

其中mytopology 是topo名,blue-spout对应setSpout("blue-spout“…)

Storm并发度

标签:

原文地址:http://www.cnblogs.com/thinkpad/p/5075561.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!