初始Storm-WorkCount案例及基本接口

Storm Topology主要由两种组件组成:

Spout:数据流的生成者,是主要数据入口,充当采集器角色,链接到数据源,将数据转换为一个个tuple,并将tuple做为数据流 进行发射
      Bolt:计算,将一个个数据流做为输入,对数据流实施运算后,选择性得输出一个或者多个数据流,bolt可一个订阅多个由spout或者其余bolt发射的数据了流
复制代码

IComponent

全部的Spout,Bolt组件都须要实现IComponent接口git

public interface IComponent extends Serializable {
    /**
     * IComponent接口定义,因此Storm组件(spout,bolt)必须实现
     * Storm经过这个方法告诉Storm该组件会发射那些数据流,每一个数据流的tuple包含那些字段
     * @param outputFieldsDeclarer
     */
    void declareOutputFields(OutputFieldsDeclarer var1);
   /**
    * 获取配合信息
    */
    Map<String, Object> getComponentConfiguration();
}
复制代码

ISpout 全部的spout的组件都须要实现ISpout接口

public interface ISpout extends Serializable {
/**
     * 由ISpout接口定义,全部Spout组件在初始化时调用这个方法
     * @param map  包含Storm配置信息的map
     * @param topologyContext  topology组件的信息
     * @param spoutOutputCollector  提供发射的方法
     */
    void open(Map var1, TopologyContext var2, SpoutOutputCollector var3);

    /**
     * 销毁的时候调用
    */
    void close();

    void activate();

    void deactivate();

   /**
     * 由ISpout接口定义,全部spout实现的核心所在
     * Storm经过调用这个方法向输出的collector发射tuple
     */
    void nextTuple();

  /**
     * 下游bolt将tuple处理成功,会调用ack方法
     * @param msgId
     */
    void ack(Object var1);

    /**
     * 下游bolt将tuple处理失败,会调用msgId方法
     * @param msgId 每一个tuple的惟一标识
     */
    void fail(Object var1);
}
复制代码

IBolt接口 全部的bolt组件都须要实现IBolt接口

public interface IBolt extends Serializable {
    /**
     * 由IBolt接口定义,类同与ISpout接口的open方法
     * 在bolt初始化的时候调用,能够用来准备bolt用到的资源,如数据库链接
     * @param map
     * @param topologyContext
     * @param outputCollector
     */
    void prepare(Map var1, TopologyContext var2, OutputCollector var3);

    /**
     * bolt的核心功能所在,由IBolt接口定义
     * 每当从订阅的数据流中接收一个tuple,都会调用这个方法
     * @param tuple
     */
    void execute(Tuple var1);

    /**
     * 由IBolt接口定义,Storm在终止一个bolt前调用这个方法
     */
    void cleanup();
}

复制代码

使用Storm开发的好处是Storm有一个本地模式,本地模式会在JVM实例中模拟一个Storm集群。大大简化了用户在开发环境或者IDE中进行开发和调试github

下面附上词频统计案例源码 github.com/MarkGao1152…数据库

相关文章
相关标签/搜索