Storm之API简介

Component组件

1)基本接口

(1)IComponent接口

(2)ISpout接口

(3)IRichSpout接口

(4)IStateSpout接口

(5)IRichStateSpout接口

(6)IBolt接口

(7)IRichBolt接口

(8)IBasicBolt接口

2)基本抽象类

(1)BaseComponent抽象类

(2)BaseRichSpout抽象类

(3)BaseRichBolt抽象类

(4)BaseTransactionalBolt抽象类

(5)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资源。
  • ack()

    成功处理tuple回调方法
  • fail()

    处理失败tuple回调方法

    原则:通常情况下(Shell和事务型的除外),实现一个Spout,可以直接实现接口IRichSpout,如果不想写多余的代码,可以直接继承BaseRichSpout。

bolt转接头

bolt的最顶层抽象是IBolt接口

  • prepare()

    prepare ()方法在集群的工作进程内被初始化时被调用,提供了Bolt执行所需要的环境。
  • execute()

    接受一个tuple进行处理,也可emit数据到下一级组件。
  • cleanup()

    Cleanup方法当一个IBolt即将关闭时被调用。不能保证cleanup()方法一定会被调用,因为Supervisor可以对集群的工作进程使用kill -9命令强制杀死进程命令。

spout的tail特性

Storm可以实时监测文件数据,当文件数据变化时,Storm自动读取。

05-22 11:37