storm ui界面上出现的spout Failed 问题解决方案!!!
来源:互联网 发布:软件测试的基础知识 编辑:程序博客网 时间:2024/06/01 12:28
这个问题比较麻烦!定位了很久(至少花了我10天左右的时间)才解决此问题!
出现此问题的原因是:
spout在默认超时时间(30s)内发射出去的Tuple没有被bolt处理就会出现spout failed。
尝试解决问题的过程:
1、调整bolt的worker、executor、task数目,希望能够解决问题。结果失败!
2、调整修改默认超时时间(topology.message.timeout.secs)为60s,修改spout的缓存队列(topology.max.spout.pending)由于我的数据量不大,每天处理数据也就最多500M,把它设置成200,由于我设置spout的并发度为5,所以可以暂存1000条tuple(spout数 乘以 topology.max.spout.pending)。结果过了几个小时还是出现Spout Failed!
3、好吧,我再观察storm ui界面,发现有两个bolt延时较大(超过1s),网上看了许多资料,最终判定是bolt处理延时过高,处理速度缓慢,导致spout发射的Tuple堆积过多,很多Tuple在超时时间内没有被bolt处理,因此发生Spout Failed的惨剧!
解决办法:
1)找出bolt哪里耗时最多!在代码里面一步一步打印出时间,比如对数据进行过滤的代码处理用了多长时间,入库用了多长时间...
2)后来我发现,数据插入到hbase里面耗时最大!!!几乎达到1s,而且我是一条一条数据进行插入的!
怎么办呢?想要减小bolt延时必然需要解决hbase插入数据耗时较大的问题,于是我想到对数据进行批量插入,比如说来了100条Tuple才执行插入操作。因此这100条Tuple需要暂时存放在一个地方,我想到的是用arraylist暂时存放数据。最后运行一下修改后的代码,发现问题应该被解决了。
4、未用批量插入和批量插入数据后的区别
1)未用批量插入
2)使用批量插入后
Spout Failed 问题算是解决了!
阅读全文
0 0
- Storm UI界面上出现的Spout Failed 问题解决方案
- storm ui界面上出现的spout Failed 问题解决方案!!!
- Storm UI界面上出现的Spout Failed 问题解决方案!!!
- Storm 提交拓扑后UI中spout、bolt的Num都显示为0
- Storm中Spout和Bolt的生命周期
- Storm的Spout和Bolt中的方法
- Docker上关于出现无法识别host的问题解决方案
- storm-kafka(storm spout作为kafka的消费端)
- Storm bolt/spout生命周期
- storm trident 自定义spout
- unity射线穿透UI的问题解决方案
- storm中supervisor, task, worker, spout, bolt之间的关系
- Storm 0.9.0中trident的Spout接口变化
- storm-kafka spout获取数据的异常解决办法
- storm-[8]-可靠的Spout-Reliable versus Unreliable Messages
- storm trident的多数据流,多spout
- storm整合kafka,spout作为kafka的消费者
- Servlet上出现“???”的问题解决
- open-falcon 环境安装(实战笔记)
- 算法系列——不用加减乘除做加法
- js获取当前路径的参数
- tomcat启动报错:java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.Lifec
- Mac下端口被占用的解决方式
- storm ui界面上出现的spout Failed 问题解决方案!!!
- 【目录索引】算法刷题部分索引
- 身份证号找生日
- 如何编写更好的SQL查询:终极指南-第一部分
- 如何在Windows服务器上新建一个Powershell.ps1的定时任务
- myeclipse 2014 运行maven程序 无法打印日志(特别注意)
- 09:与圆相关的计算
- AngularJS中重新加载当前路由页面
- caffe 安装bug