Storm精华问答 | 如何理解spout/bolt的生命周期?

戳蓝字“CSDN云计算”关注我们哦!


640?wx_fmt=png

Storm是Twitter开源的分布式实时大数据处理框架,被业界称为实时版Hadoop。随着越来越多的场景对Hadoop的MapReduce高延迟无法容忍,比如网站统计、推荐系统、预警系统、金融系统等, 大数据实时处理解决方案的应用日趋广泛,目前已是分布式技术领域最新爆发点,而Storm更是流计算技术中的佼佼者和主流。


640?wx_fmt=gif1

Q:在使用了storm一段时间后,需要重新部署storm的集群,主要是想将storm部署在其它机器上。做了以下错误操作:

        1) 没有kill 正在运行的topology,kill nimbus和supervisor的storm进程

        2) 删除了配置中"storm.local.dir"的文件夹内的内容

        3) 启动storm nimbus

系统报错,如何解决?

 

A:因为没有先killtopology,所以在启动nimbus时,zookeeper中依然保留了上次运行着的topology的信息,解决办法如下:

用zookeeper的zkCli.sh清理一下,直接重装了zookeeper。但是据说在storm0.6.1中已经解决了该bug。


640?wx_fmt=gif2

Q:在配置文件storm.yaml中,有:

那么,如何配置JVM参数呢?


A:如果worker在运行时,需要用指定的JVM参数,那么可以像这样配置:

worker.childopts: "-Dworker=worker -Xmx768m -Xdebug –Xnoagent-Djava.compiler=NONE-Xrunjdwp:transport=dt_socket,address=8111,suspend=y,server=y" 

 

640?wx_fmt=gif3

Q:如何理解spout/bolt的生命周期?

 

A:一般来说spout/bolt的生命周期如下:

1 、在提交了一个topology之后(在nimbus所在的机器),创建spout/bolt实例(spout/bolt在storm中统称为component)并进行序列化;

2、将序列化的component发送给所有的任务所在的机器;

3、在每一个任务上反序列化component;

4、在开始执行任务之前, 先执行component的初始化方法(bolt是prepare, spout是open);

因此component的初始化操作应该在prepare/open方法中进行,而不是在实例化component的时候进行。


640?wx_fmt=gif4

Q:如何将Storm与Spring框架集成?

 

 A:在进行Storm与Spring集成时,需要Storm的spout和bolt的生命周期按照上个问题那样理解清楚这样的话就会知道,component的初始化操作应该在prepare/open方法中进行,而不是在实例化component的时候进行.按照这种说法进行改造,结构该问题消失了。但接下来可能会有新的问题:

Caused by: org.xml.sax.SAXParseException: Content is not allowedin prolog.

这个异常是由于*.xml文件编码的问题。原因是在从其他项目里或者编辑工具编辑时,在文件编码中加入了BOM头的原因,于是用notePad++打开xml文件选择去掉BOM头信息,重新进行保存即可。


640?wx_fmt=gif5

Q“java.lang.NoClassDefFoundError: clojure.core.protocols$”故障如何解决?

 

A:故障的原因是因为JDK版本不匹配,安装虚拟机时系统会自带一个jdk.1.5.0。解决办法是检查JDK版本,卸载系统自带的JDK,使用自己安装的JDK版本。

        #rpm –qa | grep java
# rpm –e –nodeps java-*

配置环境变量

vi /etc/profile

重新执行一遍即可。


640?wx_fmt=png

小伙伴们冲鸭,后台留言区等着你!

关于Storm,今天你学到了什么?还有哪些不懂的?除此还对哪些话题感兴趣?快来留言区打卡啦!留言方式:打开第XX天,答:……

同时欢迎大家搜集更多问题,投稿给我们!风里雨里留言区里等你~


福利

1、扫描添加小编微信,备注“姓名+公司职位”,加入【云计算学习交流群】,和志同道合的朋友们共同打卡学习!


640?wx_fmt=jpeg


推荐阅读:


640?wx_fmt=png 真香,朕在看了!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值