初始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…數據庫

相關文章
相關標籤/搜索