spout的生命周期
来源:互联网 发布:游戏网络推广员招聘 编辑:程序博客网 时间:2024/06/12 19:47
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中,反序列化得到一个Spout实例后,它会先运行Spout实例的open()方法,在这个方法调用中,需要传入一个SpoutOutputCollector实例,后面使用该SpoutOutputCollector实例输出Tuple
5、然后Spout实例处于deactivated模式,过段时间会变成activated模式,此时会调用Spout实例的activate()方法
6、接下来在该thread中按配置数量建立task集合,在每个task中循环调用线程持有Spout实例的nextTuple(),ack()和fail()方法。任务处理成功,调用ack();任务处理失败,调用fail()
7、在运行过程中,如果发送一个失效命令给thread,那么thread所持有的Spout实例会变成处于deactivated模式,并且会调用Spout实例的deactivate()方法
8、在关闭一个thread时,thread所持有的Spout实例会调用close()方法
不过如果是强制关闭,这个close()方法有可能不会被调用到
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中,反序列化得到一个Spout实例后,它会先运行Spout实例的open()方法,在这个方法调用中,需要传入一个SpoutOutputCollector实例,后面使用该SpoutOutputCollector实例输出Tuple
5、然后Spout实例处于deactivated模式,过段时间会变成activated模式,此时会调用Spout实例的activate()方法
6、接下来在该thread中按配置数量建立task集合,在每个task中循环调用线程持有Spout实例的nextTuple(),ack()和fail()方法。任务处理成功,调用ack();任务处理失败,调用fail()
7、在运行过程中,如果发送一个失效命令给thread,那么thread所持有的Spout实例会变成处于deactivated模式,并且会调用Spout实例的deactivate()方法
8、在关闭一个thread时,thread所持有的Spout实例会调用close()方法
不过如果是强制关闭,这个close()方法有可能不会被调用到
0 0
- Spout的生命周期
- spout的生命周期
- Storm中Spout和Bolt的生命周期
- Storm bolt/spout生命周期
- trident的多数据流,多spout
- Storm的Spout和Bolt中的方法
- storm中supervisor, task, worker, spout, bolt之间的关系
- Storm 0.9.0中trident的Spout接口变化
- strom中worker、task、spout/bolt、executor、component的关系
- strom中worker、task、spout/bolt、executor、component的关系
- storm-kafka spout获取数据的异常解决办法
- strom中worker、task、spout/bolt、executor、component的关系
- 一个bolt接收spout和另一个bolt的tuple
- storm-kafka(storm spout作为kafka的消费端)
- Storm UI界面上出现的Spout Failed 问题解决方案
- storm-[8]-可靠的Spout-Reliable versus Unreliable Messages
- storm trident的多数据流,多spout
- storm ui界面上出现的spout Failed 问题解决方案!!!
- Bitmap的加载和Cache
- mapreduce 案例解析
- java-并发-CountDownLatch、CyclicBarrier和Semaphore
- struts2的核心和工作原理
- PHP处理ajax提交的裁剪后的base64的图片并保存 以cropbox.js控件为例
- spout的生命周期
- gradle 构建 Smack 报错:Can't find android.jar for 8 API. + steps for building android platform
- Java反射
- python学习笔记8——公约数与公倍数问题
- myeclipse移除struts1.x和struts2.x中的antlr-2.7.2.jar
- setsockopt()函数解析
- SecureCRT 7.3.4破解版(含注册机)
- Linux下利用Niginx进行负载均衡
- SSH配置之web.xml