Bolt的生命周期
2015-06-30 09:55
246 查看
1、在定义Topology实例过程中,定义好Spout实例和Bolt实例
2、在提交Topology实例给Nimbus的过程中,会调用TopologyBuilder实例的createTopology()方法,以获取定义的Topology实例。在运行createTopology()方法的过程中,会去调用Spout和Bolt实例上的declareOutputFields()方法和getComponentConfiguration()方法,declareOutputFields()方法配置Spout和Bolt实例的输出,getComponentConfiguration()方法输出特定于Spout和Bolt实例的配置参数值对。Storm会将以上过程中得到的实例,输出配置和配置参数值对等数据序列化,然后传递给Nimbus。
3、在Worker Node上运行的thread,从Nimbus上复制序列化后得到的字节码文件,从中反序列化得到Spout和Bolt实例,实例的输出配置和实例的配置参数值对等数据,在thread中Spout和Bolt实例的declareOutputFields()和getComponentConfiguration()不会再运行。
4、在thread中,反序列化得到一个Bolt实例后,它会先运行Bolt实例的prepare()方法,在这个方法调用中,需要传入一个OutputCollector实例,后面使用该OutputCollector实例输出Tuple
5、接下来在该thread中按照配置数量建立task集合,然后在每个task中就会循环调用thread所持有Bolt实例的execute()方法
6、在关闭一个thread时,thread所持有的Bolt实例会调用cleanup()方法
不过如果是强制关闭,这个cleanup()方法有可能不会被调用到
参考文献:
[1]https://storm.apache.org/apidocs/backtype/storm/task/IBolt.html
2、在提交Topology实例给Nimbus的过程中,会调用TopologyBuilder实例的createTopology()方法,以获取定义的Topology实例。在运行createTopology()方法的过程中,会去调用Spout和Bolt实例上的declareOutputFields()方法和getComponentConfiguration()方法,declareOutputFields()方法配置Spout和Bolt实例的输出,getComponentConfiguration()方法输出特定于Spout和Bolt实例的配置参数值对。Storm会将以上过程中得到的实例,输出配置和配置参数值对等数据序列化,然后传递给Nimbus。
3、在Worker Node上运行的thread,从Nimbus上复制序列化后得到的字节码文件,从中反序列化得到Spout和Bolt实例,实例的输出配置和实例的配置参数值对等数据,在thread中Spout和Bolt实例的declareOutputFields()和getComponentConfiguration()不会再运行。
4、在thread中,反序列化得到一个Bolt实例后,它会先运行Bolt实例的prepare()方法,在这个方法调用中,需要传入一个OutputCollector实例,后面使用该OutputCollector实例输出Tuple
5、接下来在该thread中按照配置数量建立task集合,然后在每个task中就会循环调用thread所持有Bolt实例的execute()方法
6、在关闭一个thread时,thread所持有的Bolt实例会调用cleanup()方法
不过如果是强制关闭,这个cleanup()方法有可能不会被调用到
参考文献:
[1]https://storm.apache.org/apidocs/backtype/storm/task/IBolt.html
相关文章推荐
- 关于数据输入之先输入int数值在输入string的一些小问题
- js块元素和内联元素的种种恩怨
- 非常有用的 Oracle 查询语句
- 为什么web应用在tomcat启动时报java.lang.ClassCastException异常?
- window7下查看端口对应的应用程序名称
- 科企通
- MFC 根据圆心和半径画圆
- ROUTEROS5.2企业静态IP NAT映射
- mongodb在Ubuntu的安装
- Java进阶(极客)——反射机制(一)概述及Class 对象的机制与实现
- 日经社説 20150630 アジア投資銀は透明な運営を
- 我的WCF之旅(2):Endpoint Overview
- Windows下使用Visual Studio 2010 编译ffmpeg全过程
- C/C++中volatile关键字详解(转)
- python实现线程池的方法
- matlab 内存不足原因探究
- 日经春秋 20150630
- 快讯:阳光动力2号正在飞越太平洋!
- 解析XML的4种方式及优缺点比较
- bzoj2489