storm常用接口
目录
1 ISpout接口
* 概述
核心接口,负责将数据发送到topology中去处理。
storm会跟踪Spout发出去的tuple的DAG
* 核心方法
open: 初始化操作
close: 资源释放操作
nextTuple: 发送数据 -- core
ack:tuple处理成功,storm会反馈给spout一个成功的消息
fail:tuple处理失败,storm会发送一个消息给Spout,处理失败
ack/fail/nextTuple是在同一个线程中执行,所以不用考虑线程安全问题
查找接口的实现类:
IDEA 风格 ctrl + alt +B
* 实现类
public abstract class BaseRichSpout extends BaseComponent implements IRichSpout
public interface IRichSpout extends ISpout,IComponent
DRPCSpout
ShellSpout
2 IComponent接口
概述:
public interface IComponent extends Serializable
为topology中所有可能的组件提供公用的方法
void declareOutputFields(OutputFieldsDeclarer declarer);
用于声明当前Spout/Bolt发送的tuple的名称
使用OutputFieldsDeclarer配合使用
实现类:
public abstract class BaseComponent implements IComponent
3 IBolt接口
* 概述
职责:接收tuple,并进行相应的处理(filter/join/....)
hold住tuple再处理
IBolt会在一个运行的机器上创建,使用Java序列化它,然后提交到主节点(nimbus)上去执行。
nimbus会启动worker来反序列化,调用prepare方法,然后才开始处理tuple处理
* 方法
prepare:初始化
execute:处理一个tuple,tuple对象中包含了元数据信息
cleanup:shutdown之前的资源清理操作
* 实现类:
public abstract class BaseRichBolt extends BaseComponent implements IRichBolt {}
public interface IRichBolt extends IBolt, IComponent{}
RichShellBolt