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自动读取。

  • 相关阅读:
    hdu 3666 差分约束系统
    hdu 1198农田灌溉
    常微分方程(阿諾爾德) Page 45 相空間,相流,運動,相曲線 註記
    高等微積分(高木貞治) 1.4節 例2
    常微分方程(阿諾爾德) Page 45 相空間,相流,運動,相曲線 註記
    解析函數論 Page 29 命題(2) 函數模的有界性
    高等微積分(高木貞治) 1.4節 例2
    解析函數論 Page 29 命題(1) 有界閉集上的一致連續性
    解析函數論 Page 29 命題(3) 模的下界的可達性
    解析函數論 Page 29 命題(2) 函數模的有界性
  • 原文地址:https://www.cnblogs.com/shaofeer/p/11154276.html
Copyright © 2011-2022 走看看