`
BlackWing
  • 浏览: 196588 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

那些storm的坑坑

阅读更多
转载请声明出处:http://blackwing.iteye.com/blog/2147633

在使用storm的过程中,感觉它还是不如hadoop那么成熟。当然,它的流式处理能力挺让人眼前一亮,以前做的个性化推荐都是离线计算,现在总算把实时部分也加上了。

总结一下storm使用的些心得:
1.尽量把大量数据处理行为分拆成多个处理component。
2.storm不擅长保存状态,一般需要借助如redis这些外部存储比较方便实现逻辑。
3.其实跟1有点类似,不用在component(例如spout或者bolt)中保存大量数据,因为很容易撑爆内存,导致worker被kill掉。

下面是我遇到的一些坑:
1. 出现错误:GC overhead limit exceeded
http://www.slideshare.net/miguno/apache-storm-09-basic-training-verisign
这里的117页看到:
“OOM: GC overhead limit exceeded” exception, then typically your upstream spouts/bolts are outpacing your downstream bolts.

意思是说,上游的spout或者boltemit的数据速度超过下游bolt的处理速度。因此导致很多emit出去的tuple被缓存起来,积累到一定程度后就会撑爆内存。

PS:看不到原ppt的可以到附件下载。

2. 需要在component间传输的类,外部类如果对内部类有引用,则内部类也要实现串行化
public Class A implements Serializable  {
B tmp = new B();
Class B{
....
}
}


如果A要被emit出去,则B也有串行化,不然下一个接收bolt会包tmp变量为null错误。
public Class A implements Serializable  {
B tmp = new B();
Class B implements Serializable{
....
}
}


3. spout、bolt中初始化尽量放到prepare()中进行
public class ReadLogsFromFileEmitSetSpout extends BaseRichSpout {

	Configuration conf = new Configuration();
......

}

这个spout在初始化时就会报错:java.io.NotSerializableException
原因是supervisor先实例化这个spout,再传输到具体的worker机器后,跟着调用其prepare()方法来初始化spout,那么如果在spout声明变量时就初始化变量,而该变量是不能串行化的,则会报错。以下是来自google的原文解释:
The supervisor instantiates the bolts, sends them to the workers, and then calls prepare() on all of them. Therefore, anything that isn't serializable that is instantiated before prepare() causes this process to fail.




分享到:
评论

相关推荐

    Storm入门教程 之Storm原理和概念详解

    Storm入门教程 之Storm原理和概念详解,出自Storm流计算从入门到精通之技术篇,Storm入门视频教程用到技术:Storm集群、Zookeeper集群等,涉及项目:网站PV、UV案例实战、其他案例; Storm视频教程亮点: 1、Storm...

    storm-ui:Apache Storm 的用户界面

    主分支: ##包裹包战 mvn clean package -DskipTests=true -Dwarcp ./target/storm-ui.war $TOMCAT_HOME/webapps/包装罐 mvn clean package -DskipTests=truecp ./target/storm-ui-*.jar $STORM_HOME/external/...

    storm入门.pdf

    storm的入门,东西很不错!看完就算是基本入门啦!!还等什么?

    传智播客Storm项目实战课程 Storm的集群搭建实战 Storm项目学习视频教程

    01-storm简介 02-storm部署-1 03-storm部署-2 04-storm部署概念 05-streamgrouping 06-storm组件生命周期 07-storm可靠性1 08-storm可靠性2

    细细品味Storm_Storm简介及安装

    细细品味Storm_Storm简介及安装

    storm安装包

    storm安装包storm安装包storm安装包storm安装包storm安装包storm安装包storm安装包

    Apache Storm(apache-storm-2.3.0.tar.gz)

    Apache Storm(apache-storm-2.3.0.tar.gz) 是一个免费的开源分布式实时计算系统。Apache Storm 可以轻松可靠地处理无限制的数据流,实时处理就像 Hadoop 进行批处理一样。Apache Storm 很简单,可以与任何编程语言...

    Storm实时数据处理

    Storm实时数据处理

    Apache Storm(apache-storm-2.3.0-src.tar.gz 源码)

    Apache Storm(apache-storm-2.3.0-src.tar.gz 源码) 是一个免费的开源分布式实时计算系统。Apache Storm 可以轻松可靠地处理无限制的数据流,实时处理就像 Hadoop 进行批处理一样。Apache Storm 很简单,可以与...

    大数据-Storm实时数据处理

     《大数据技术丛书:Storm实时数据处理》通过丰富的实例,系统讲解Storm的基础知识和实时数据处理的最佳实践方法,内容涵盖Storm本地开发环境搭建、日志流数据处理、Trident、分布式远程过程调用、Topology在不同...

    《Storm实时数据处理》PDF.zip

    《storm实时数据处理》通过丰富的实例,系统讲解Storm的基础知识和实时数据处理的最佳实践方法,内容涵盖Storm本地开发环境搭建、日志流数据处理、Trident、分布式远程过程调用、Topology在不同编程语言中的实现方法...

    Storm.Applied.Strategies.for.real-time.event.processing

    Storm Applied is a practical guide to using Apache Storm for the real-world tasks associated with processing and analyzing real-time data streams. This immediately useful book starts by building a ...

    Storm实战构建大数据实时计算

    Storm官方网站有段简介 Storm是一个免费并开源的分布式实时计算系统。利用Storm可以很容易做到可靠地处理无限的数据流,像Hadoop批量处理大数据一样,Storm可以实时处理数据。Storm简单,可以使用任何编程语言。

    storm.学习资料和代码

    获取到文件名称 : apache-storm-0.9.2-incubating.tar.gz 获取到文件名称 : Learning Storm [eBook].pdf 获取到文件名称 : Storm Blueprints.Patterns.pdf 获取到文件名称 : storm01.rar 获取到文件名称 : storm...

    storm chm文档

    storm chm文档 ,使用Storm实现实时大数据分析,storm源码学习

    storm json最新代码

    storm json最新代码storm json最新代码storm json最新代码storm json最新代码storm json最新代码storm json最新代码storm json最新代码storm json最新代码storm json最新代码storm json最新代码storm json最新代码...

    IP-Storm!0[1].03IP-Storm!0[1].03

    IP-Storm!0[1].03IP-Storm!0[1].03IP-Storm!0[1].03IP-Storm!0[1].03IP-Storm!0[1].03IP-Storm!0[1].03IP-Storm!0[1].03IP-Storm!0[1].03IP-Storm!0[1].03IP-Storm!0[1].03IP-Storm!0[1].03

    storm入门 PDF 下载

    storm入门

Global site tag (gtag.js) - Google Analytics