Storm Topology 一种优化思路

本文提出了一种在分布式环境中优化Storm Topology的方法。通过分析各组件的executorlatency,合理调整并行度来提高整体处理效率,并讨论了如何通过调整线程池大小进一步提升CPU利用率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文:https://my.oschina.net/jerrysearch/blog/201373

谈谈分布式环境一种优化storm topology的思路,肯定不是优化包含的全部,但一定是其中一部分。

先假设一种环境,三台机器,cpu core 4,net KM 网

topology

componentnameexecutor latency(ms)
spouts-
boltA0.5
boltB0.1
boltC0.5
boltD1.0
boltE0.2


executor代表数据进入bolt execute方法执行的时间,storm通过采样获得,采样在总数上肯定会有误差,但平均数我们暂且认为其一定,这就相当于在1W个1中随机选择一个,怎么选都是1,所以暂且我们假设executor latency可信,最后我们通过实际效率反过来再验证我们的假设。


假定,我们以一种参数提交了topology,运行后ui查看参数如表格,我们观察发现,A,C 两个bolt延迟在0.5ms,B bolt延迟在0.1ms,D bolt延迟在1.0ms,E bolt延迟在0.2ms,所以可以认为性能:B=2E=5A=5C=10D,所以我们提高整个topology的效率可以调整各bolt的并行度,我们设B的并行度为X,可以得出   X+2X+5X*2+10X=All executor,如果在某个bolt中有阻塞情况,我们可以再额外提高一些并行度,该环境中三台机器,最大并行度为3*4=12,X》=1,所以X=1,由此可得出,B bolt并行度为1,所以每秒处理效率大概=1000/0.1*1=1W。


另外在storm中每个worker有个线程池,池大小默认为core数,我们可以根据情况提高池大小,提高cpu利用率。

其它参数这里不提了,根据实际情况可以酌情调整。


总结:

由此可看出,ui中executor latency基本可信,我们在调优时可以参考该参数。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值