storm在运行过程中会自动调整拓扑吗_【Storm】storm并发机制

Storm的一个topology的执行过程中有以下几个成员参与:

v2-b894a32d7adf53a8cdfad801472b0d14_b.jpg

从图中可以看出,

①当supervisor接收到topology任务的时候,他会分配worker去执行。supervisor与node服务器节点之间是对应关系,supervisor与worker是一对多的关系,即一个supervisor上有一个或者多个worker,但是每个worker只属于一个supervisor。所以一个topology可以被分配到一个或者多个worker上运行。

②worker是运行在jvm虚拟机上的一个进程process,而一个node节点上又可以运行多个jvm进程。我们知道一个进程是可以有多个线程的,一个worker下又可以运行一个或者多个executor。

③默认情况下一个executor与task之间是一对一的,也可以通过设置executor对多个task,但是一个task只能有一个executor执行。每个task才是对应到具体的一个spout或者一个bolt。task是实际执行数据处理的最小单元。

注意:

Task数量在整个Topology生命周期中保持不变,Executor数量可以变化或手动调整

设置Worker进程数

Config.setNumWorkers(int workers)

设置Executor线程数

TopologyBuilder.setSpout(String id, IRichSpout spout, Number parallelism_hint)
TopologyBuilder.setBolt(String id, IRichBolt bolt, Number parallelism_hint)
其中, parallelism_hint即为executor线程数

设置Task数量

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

TopologyBuilder topologyBuilder = new TopologyBuilder();
topologyBuilder.setSpout("spout", new MySpout(), 1);
topologyBuilder.setBolt("green-bolt", new GreenBolt(), 2)
               .setNumTasks(4)
               .shuffleGrouping("blue-spout);

Rebalance – 再平衡

当多了或者少了一些node节点的时候,可以通过rebalance来动态的调整平衡topology的worker数量、Executor线程数量

有两种方式:

1、通过Storm UI

2、通过Storm CLI

通过ui可以直接在前端界面上更改

通过cli动态可以用下面的命令:

storm rebalance mytopology -n 5 -e blue-spout=3 -e yellow-bolt=10
将mytopology拓扑worker进程数量调整为5个
“ blue-spout ” 所使用的线程数量调整为3个
“ yellow-bolt ”所使用的线程数量调整为10个
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值