【Storm】API入门案例开发

本文介绍了Storm的基本组件,如Spout和Bolt,详细讲解了它们的接口和抽象类,以及如何实现一个简单的日志处理案例。通过创建Spout读取日志文件并发射数据,Bolt接收数据并打印会话ID,展示了Storm实时监测文件并处理新增数据的能力。
摘要由CSDN通过智能技术生成

1.Component 组件

注:上图中用红框圈出的是3个常用的API。

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 抽象类

 

2 Spout 水龙头

Spout 的最顶层抽象是 ISpout 接口。

https://s2.ax1x.com/2019/04/13/ALzbDK.png

 

(1)open()

  是初始化方法。

(2)close()

  在该 Spout 关闭前执行,但是并不能得到保证其一定被执行,kill -9 时不执行,Storm kill {topoName} 时执行。

(3)activate()

  当 Spout 已经从失效模式中激活时被调用。该 Spout 的 nextTuple() 方法很快就会被调用。

(4)deactivate ()

  当 Spout 已经失效时被调用。在 Spout 失效期间,nextTuple 不会被调用。Spout 将来可能会也可能不会被重新激活。

(5)nextTuple()

  当调用 nextTuple() 方法时,Storm 要求 Spout 发射元组到输出收集器(OutputCollecctor)。

  nextTuple() 方法应该是非阻塞的,所以,如果 Spout 没有元组可以发射,该方法应该返回。

  nextTuple()、ack() 和 fail() 方法都在 Spout 任务的单一线程内紧密循环被调用。

  当没有元组可以发射时,可以让 nextTuple 去 sleep 很短的时间,例如1毫秒,这样就不会浪费太多的 CPU 资源。

(6)ack()

  成功处理 Tuple 回调方法。

(7)fail()

  处理失败 Tuple 回调方法。

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

3 Bolt 转接头

Bolt 的最顶层抽象是 IBolt 接口。

https://s2.ax1x.com/2019/04/13/ALzXUe.png

 

(1)prepare()

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

(2)execute()

  接受一个 Tuple 进行处理,也可 emit 数据到下一级组件。

(3)cleanup()

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值