zoukankan      html  css  js  c++  java
  • Storm之API简介

    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命令强制杀死进程命令。

    如果在本地模式下运行Storm,当拓扑被杀死的时候,可以保证cleanup()方法一定会被调用。
    实现一个Bolt,可以实现IRichBolt接口或继承BaseRichBolt,如果不想自己处理结果反馈,可以实现IBasicBolt接口或继承BaseBasicBolt,它实际上相当于自动做了prepare方法和collector.emit.ack(inputTuple)。

    spout的tail特性

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

  • 相关阅读:
    全国哀悼日 灰色CSS滤镜 PENGHAO
    Jmail发信函数 PENGHAO
    XHTML 1.0 参考 PENGHAO
    今天搬家。。 PENGHAO
    JS代码Checkbox控制输入框 PENGHAO
    CSS hack:区分IE6,IE7,firefox PENGHAO
    获取表中新记录(下一条记录)的主键值的存储过程 PENGHAO
    五种提高 SQL 性能的方法 PENGHAO
    [收藏 ]针对IE网页浏览器不同版本解释的CSS或javascript PENGHAO
    小本创业者的致胜法宝! PENGHAO
  • 原文地址:https://www.cnblogs.com/shaofeer/p/11154276.html
Copyright © 2011-2022 走看看