前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >初始Storm-WorkCount案例及基本接口

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

作者头像
Meet相识
发布2018-09-12 16:26:20
3910
发布2018-09-12 16:26:20
举报
文章被收录于专栏:技术专栏

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

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

所有的Spout,Bolt组件都需要实现IComponent接口

代码语言:javascript
复制
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接口
代码语言:javascript
复制
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接口
代码语言:javascript
复制
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中进行开发和调试

下面附上词频统计案例源码 https://github.com/MarkGao11520/word-count-storm-demo

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.12.27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Storm Topology主要由两种组件组成:
    • IComponent
      • ISpout 所有的spout的组件都需要实现ISpout接口
        • IBolt接口 所有的bolt组件都需要实现IBolt接口
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档