IBolt:

bolt接口类,定义了常用的几个接口,IBolt的实现类在client上被创建,然后序列化到拓扑里并被提交到集群的master上,之后nimbus会启动worker进行反序列化,调用prepare进行准备完毕之后就开始处理tuples

如果是在java里定义bolts ,建议实现IRichBolt.java接口类,IRichBolt.java同时继承了IComponent.java接口,提供了更多对拓扑进行操作的方法。


/*** 当集群中的worker初始化一个跟当前Bolt相关的task时候被调用,此方法提供和准备bolt执行时的环境.* @param stormConf 此bolt使用的storm配置,合并了本机和集群的配置,将会提供给topology* @param context task的上下文,可以获取taskId,componentId,input,output等* @param collector 用于任意时刻提交bolt里的tuples,collector是线程安全的,应当保存在Bolt里.*/
void prepare(Map stormConf, TopologyContext context, OutputCollector collector);
/*** 处理单个输入的tuple* 这里面使用OutputCollector来提交tuples.* 官方建议所有的输入tuples在处理完之后进行ack或者fail,否则storm无法判断该tuples是否被处理完毕* 一般使用IBasicBolt,在execute方法中额外提供了outputCollector,会更加方便处理* @param input*/
void execute(Tuple input);
/*** Bolt关闭的时候被调用,由于是被supervisor使用kill 9干掉的,所以并不保证cleanup会被执行*/
void cleanup();


IComponent.java

组件接口,所有的bolt和spout都可以视作组件
/*** 申明了当前组件的输出模式* @param declarer 申明输出streamId,输出的field,判断一个output stream是否是direct stream*/
void declareOutputFields(OutputFieldsDeclarer declarer);
/***获取组件配置.* @return*/
Map<String, Object> getComponentConfiguration();

IRichBolt.java

跟IBolt接口相似,只是多继承了IComponent,多了申明输出和获取配置两个接口
IBasicBolt.java
/*** 跟IBolt.java中作用类似,只是少了OutPutCollector*/
void prepare(Map stormConf, TopologyContext context);
/*** 跟Ibolt.java中作用类似,多了OutPutCollector*/
void execute(Tuple input, BasicOutputCollector collector);void cleanup();

Storm之Bolt-接口相关推荐

  1. Storm Bolt接口

          Bolt是Topology中数据处理的基本单元,也是Storm针对处理过程的编程单元.Topology中所有的处理都是在这些bolt中完成的. Bolt可以将数据项发送至多个数据流(Str ...

  2. bolt在java_Storm Bolt接口

    Bolt是Topology中数据处理的基本单元,也是Storm针对处理过程的编程单元.Topology中所有的处理都是在这些bolt中完成的. Bolt可以将数据项发送至多个数据流(Stream).编 ...

  3. Storm的Metric接口简介

    本文由作者林洋港授权网易云社区发布. 作为服务端程序,我们总是需要向外界报告一些统计数据,以助于了解系统的运行情况,比如某个接口的调用时间.系统处理的请求数等等.当我们的程序以Storm Topolo ...

  4. Storm的WordCount案例(spout bolt详细总结)

    spout介绍 一个spout是由流组成的数据源在storm的拓扑里,通常情况下会读取外部的数据源  然后emit(发射)到拓扑里面,比如是kafka,MySQL或者redis等等,Spout有两种实 ...

  5. 从Storm到Flink:大数据处理的开源系统及编程模型(文末福利)

    本文节选自CCF大数据教材系列丛书之<大数据处理>,本书由华中科技大学金海教授主编,包括大数据处理基础技术.大数据处理编程与典型应用处理.大数据处理系统与优化三个方面.本教材以大数据处理编 ...

  6. 从Storm到Flink:大数据处理的开源系统及编程模型

    开源系统及编程模型基于流计算的基本模型,当前已有各式各样的分布式流处理系统被开发出来.本节将对当前开源分布式流处理系统中三个最典型的代表性的系统:Apache Storm,Spark Streamin ...

  7. storm源码之storm代码结构【译】

    说明:本文翻译自Storm在GitHub上的官方Wiki中提供的Storm代码结构描述一节Structure of the codebase,希望对正在基于Storm进行源码级学习和研究的朋友有所帮助 ...

  8. Apache Storm 实时流处理系统通信机制源码分析

    我们今天就来仔细研究一下Apache Storm 2.0.0-SNAPSHOT的通信机制.下面我将从大致思想以及源码分析,然后我们细致分析实时流处理系统中源码通信机制研究. 1. 简介 Worker间 ...

  9. Storm具体的解释(二)、成为第一Storm申请书

    在全面介绍Storm之前,我们首先通过简单的Demo让我们来看看什么是整体感觉Storm. Storm执行模式: 本地模式(Local Mode): 即Topology(相当于一个任务,兴许会具体解说 ...

最新文章

  1. web开发小记2:js触发css过渡
  2. iOS摄像头和相册-UIImagePickerController-浅析(转)
  3. tf-idf:信息检索
  4. Nginx源码分析-内存池
  5. 创意总监分享:我是如何做一款手游地图的
  6. mysql 隔离级别 知乎_TiDB 事务隔离级别
  7. MySQL 的实时性能监控利器
  8. nextcloud+nginx+mysql_nextcloud网盘搭建:Ubuntu18.04+Nginx+Mysql
  9. [误将两块磁盘挂载到根目录][解决办法]
  10. 数据结构基础温故-5.图(上):图的基本概念
  11. 计算机会计凭证审核,记账凭证的审核
  12. 腾讯云服务器芯片,腾讯云星星海重磅发布首款自研GPU服务器 占据业界几宗“最”...
  13. 【PDF合并】滴滴出行电子发票及行程报销单【一页打印】
  14. 计算机技术专硕学哪些课程,计算机专业考研需要考哪些科目
  15. pdo 参数绑定中 where 子句中的错误的解决
  16. QQ相关(一)【导出所有QQ好友】
  17. mysql分数占百分比查询
  18. 假装搞运维,MySQL让我哭
  19. 多无人机辅助移动边缘计算中的任务卸载和轨迹优化
  20. UDP 不阻塞的原因

热门文章

  1. 什么是分布式事务以及有哪些解决方案?
  2. 链接oracle 无监听程序,连接ORACLE 无监听程序
  3. 手写html基础格式,手写服务器_HTML 简单入门知识
  4. mysql最高权限超级用户是_MySQL中,预设的、拥有最高权限超级用户的用户名为( )...
  5. MATLAB基本语法 初学者
  6. linux sort 时间排序,linux sort多字段排序实例解析
  7. vivado中的rtl中电路图无发生成_FPGA零基础学习:数字电路中的组合逻辑
  8. yum源无法安装mysql_Centos7上使用官方YUM源安装Mysql
  9. 动态链接库和静态库的区别
  10. 视频清晰度、色偏以及亮度异常检测