常用API
API简介
Component组件
基本接口
- IComponent接口
- ISpout接口
- IRichSpout接口
- IStateSpout接口
- IRichStateSpout接口
- IBolt接口
- IRichBolt接口
- IBasicBolt接口
基本抽象类
- BaseComponent抽象类
- BaseRichSpout抽象类
- BaseRichBolt抽象类
- BaseTransactionalBolt抽象类
- BaseBasicBolt抽象类
spout水龙头
Spout的最顶层抽象是ISpout接口
-
Open()
:初始化方法 -
close()
:该spout关闭前执行,但是并不能得到保证其一定被执行,kill -9时不执行,Storm kill {topoName} 时执行 -
activate()
:当Spout已经从失效模式中激活时被调用。该Spout的nextTuple()方法很快就会被调用 -
deactivate
:当Spout已经失效时被调用。在Spout失效期间,nextTuple不会被调用。Spout将来可能会也可能不会被重新激活 -
nextTuple()
:当调用nextTuple()方法时,Storm要求Spout发射元组到输出收集器(OutputCollecctor)。NextTuple方法应该是非阻塞的,所以,如果Spout没有元组可以发射,该方法应该返回。nextTuple()、ack()和fail()方法都在Spout任务的单一线程内紧密循环被调用。当没有元组可以发射时,可以让nextTuple去sleep很短的时间,例如1毫秒,这样就不会浪费太多的CPU资源 -
ask()
:成功处理tuple
回调方法 -
fail()
:处理失败tuole
回调方法
bolt转接头
bolt的最顶层抽象是IBolt接口
prepare()
:prepare ()方法在集群的工作进程内被初始化时被调用,提供了Bolt执行所需要的环境。
execute()
:接受一个tuple进行处理,也可emit数据到下一级组件。
cleanup()
:Cleanup方法当一个IBolt即将关闭时被调用。不能保证cleanup()方法一定会被调用,因为Supervisor可以对集群的工作进程使用kill -9命令强制杀死进程命令。
如果在本地模式下运行Storm,当拓扑被杀死的时候,可以保证cleanup()方法一定会被调用。
实现一个Bolt,可以实现IRichBolt接口或继承BaseRichBolt,如果不想自己处理结果反馈,可以实现 IBasicBolt接口或继承BaseBasicBolt,它实际上相当于自动做了prepare方法和collector.emit.ack(inputTuple)。
spout的tail特性
Storm可以实时监测文件数据,当文件数据变化时,Storm自动读取。
网友评论