分享

Strom Topology执行分析:worker数,Bolt实例数,executor数,task数

lzw 发表于 2014-8-29 22:43:16 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 1 8237

问题导读:
1.创建Storm的Topology时,如何指定bolt名称、类型以及bolt的线程数
2.Topology的worker数通过config设置,它可以通过哪个命令任意调整?
3.bolt的task数,通过setNumTasks()设置,运行时能否调整?






在创建Storm的Topology时,我们通常使用如下代码:

  1. builder.setBolt("cpp", new CppBolt(), 3).setNumTasks(5).noneGrouping(pre_name);
  2. Config conf = new Config();
  3. conf.setNumWorkers(3);
复制代码

参数1:bolt名称 "cpp"

参数2:bolt类型 CppBolt

参数3:bolt的并行数,parallelismNum,即运行topology时,该bolt的线程数
setNumTasks() 设置bolt的task数

noneGrouping()  设置输入流方式及字段
conf.setNumWorkers()设置worker数据。





得出如下结论:

1)Topology的worker数通过config设置,即执行该topology的worker(java)进程数。它可以通过storm rebalance 命令任意调整。


2) Topology中某个bolt的executor数,即parallelismNum,即执行该bolt的线程数,在setBolt时由第三个参数指定。它可以通过storm rebalance 命令调整,但最大不能超过该bolt的task数;

3) bolt的task数,通过setNumTasks()设置。(也可不设置,默认取bolt的executor数),无法在运行时调整。

4)Bolt实例数,这个比较特别,它和task数相等。有多少个task就会new 多少个Bolt对象。而这些Bolt对象在运行时由Bolt的thread进行调度。也即是说

时由Bolt的thread进行调度。也即是说
  1. builder.setBolt("cpp", new CppBolt(), 3).setNumTasks(5).noneGrouping(pre_name);
复制代码

会创建3个线程,但有内存中会5个CppBolt对象,三个线程调度5个对象。




欢迎加入about云群9037177932227315139327136 ,云计算爱好者群,亦可关注about云腾讯认证空间||关注本站微信

已有(1)人评论

跳转到指定楼层
GreenArrow 发表于 2014-8-30 12:16:38
感谢分享,谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条