分享

Storm环境配置及吞吐量测试调优

本帖最后由 sunshine_junge 于 2014-9-19 14:54 编辑


问题导读:
1.spouts、bolts并发数如何确定?
2.影响storm吞吐量的因素有哪些?







一、硬件配置信息
           6台服务器,2个CPU,96G,6核,24线程


二、集群信息
             Storm集群:1个nimbus,6个supervisor
  1.              nimbus:     192.168.7.127
  2.              supervisor: 192.168.7.128
  3.                               192.168.7.129
  4.                               192.168.7.130
  5.                               192.168.7.131
  6.                               192.168.7.132
  7.                               192.168.7.133
复制代码



Zookeeper集群(3个节点):

  1. 192.168.7.127:2181,
  2. 192.168.7.128:2181,
  3. 192.168.7.129:2181
复制代码


Kafka集群(7个节点):      
  1. 192.168.7.127:9092
  2. 192.168.7.128:9092
  3. 192.168.7.129:9092
  4. 192.168.7.130:9092
  5. 192.168.7.131:9092
  6. 192.168.7.132:9092
  7. 192.168.7.133:9092
复制代码



三、配置关系解析

按照服务器的硬件配置可以计算得到以下信息:
1、worker和slot的关系是一一对应的,一个worker占用一个slot。计算集群worker和slot数量一般以每个服务器的CPU线程数来计算。
如上面的环境就是
worker、slot:144 (6个supervisor,每个supervisor 都是24线程的CPU,24*6=144)

2、spout并发数,也就是setSpout后面的参数10------builder.setSpout("words",newKafkaSpout(kafkaConfig),10);
这里我在测试的时候,是使用kafka和storm做数据传输,kafka有一个partition的机制,Spout线程数量根据kafka topic的partition数量
来定义,一般是1:1的关系,就是当前topic的partition数量为18,则spout的线程数量可以设置为18。也可以稍微比这个数多,但是不能
多太多;具体需要多少个kafka partition大伙可根据需求来做测试找到自己需要的数值

3、bolt的并发数------builder.setBolt("words",newKafkaBolt(),10);
bolt的并发数量,决定了处理掉效率,bolt并发度为1,面对大的数据量可能会很慢,bolt并发度过高,也不好,可能会照成资源浪费。
具体数值需测试决定。


四、吞吐量测试(以下只列举了部分场景)
测试场景1:

  1. partition :20
  2. worker :10
  3. Spout :20
  4. Bolt :1
复制代码



计算结果:
1.png


测试场景2:

  1. partition :20
  2. worker :20
  3. Spout :20
  4. Bolt :1
复制代码



测试结果:
2.png


场景3:(数据生成程序在128-132上执行,每个程序100个现成,资源也有一定的占用,所以实际结果可能要比测试结果好点)

  1. Topic 5
  2. Partition 20
  3. Spout 20
  4. Worker 20
  5. Bolt 1
复制代码



测试结果:
3.png

总结结果:

  1. 5个Topic,20个partition,20*5个worker,20*5个spout,1*5个bolt
  2. 总的吞吐量=5.04+4.02+5.76+6.31+4.99=26.12
复制代码



总结:
影响storm吞吐量的因素有以下几个:spout并发数,worker数量(与slot挂钩),kafka的partition数量
其实这里spout的并发数和kafka的partition的数量是挂钩的。
这里要注意的是,提高worker的数量,虽然可以提高吞吐量,但是要知道,worker的数量和集群的机器数量是挂钩的,是有限制的。
所以需要通过测试设置你自己觉得合理的一个数值;因为如果一个任务设置的worker数量过多,也就说明了留给其他任务的worker数量就越少,运行的任务也就越少。所以只要符合业务需求的那个值才是最好的。










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

没找到任何评论,期待你打破沉寂

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

本版积分规则

关闭

推荐上一条 /2 下一条