Storm之Bolt-接口
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-接口相关推荐
- Storm Bolt接口
Bolt是Topology中数据处理的基本单元,也是Storm针对处理过程的编程单元.Topology中所有的处理都是在这些bolt中完成的. Bolt可以将数据项发送至多个数据流(Str ...
- bolt在java_Storm Bolt接口
Bolt是Topology中数据处理的基本单元,也是Storm针对处理过程的编程单元.Topology中所有的处理都是在这些bolt中完成的. Bolt可以将数据项发送至多个数据流(Stream).编 ...
- Storm的Metric接口简介
本文由作者林洋港授权网易云社区发布. 作为服务端程序,我们总是需要向外界报告一些统计数据,以助于了解系统的运行情况,比如某个接口的调用时间.系统处理的请求数等等.当我们的程序以Storm Topolo ...
- Storm的WordCount案例(spout bolt详细总结)
spout介绍 一个spout是由流组成的数据源在storm的拓扑里,通常情况下会读取外部的数据源 然后emit(发射)到拓扑里面,比如是kafka,MySQL或者redis等等,Spout有两种实 ...
- 从Storm到Flink:大数据处理的开源系统及编程模型(文末福利)
本文节选自CCF大数据教材系列丛书之<大数据处理>,本书由华中科技大学金海教授主编,包括大数据处理基础技术.大数据处理编程与典型应用处理.大数据处理系统与优化三个方面.本教材以大数据处理编 ...
- 从Storm到Flink:大数据处理的开源系统及编程模型
开源系统及编程模型基于流计算的基本模型,当前已有各式各样的分布式流处理系统被开发出来.本节将对当前开源分布式流处理系统中三个最典型的代表性的系统:Apache Storm,Spark Streamin ...
- storm源码之storm代码结构【译】
说明:本文翻译自Storm在GitHub上的官方Wiki中提供的Storm代码结构描述一节Structure of the codebase,希望对正在基于Storm进行源码级学习和研究的朋友有所帮助 ...
- Apache Storm 实时流处理系统通信机制源码分析
我们今天就来仔细研究一下Apache Storm 2.0.0-SNAPSHOT的通信机制.下面我将从大致思想以及源码分析,然后我们细致分析实时流处理系统中源码通信机制研究. 1. 简介 Worker间 ...
- Storm具体的解释(二)、成为第一Storm申请书
在全面介绍Storm之前,我们首先通过简单的Demo让我们来看看什么是整体感觉Storm. Storm执行模式: 本地模式(Local Mode): 即Topology(相当于一个任务,兴许会具体解说 ...
最新文章
- web开发小记2:js触发css过渡
- iOS摄像头和相册-UIImagePickerController-浅析(转)
- tf-idf:信息检索
- Nginx源码分析-内存池
- 创意总监分享:我是如何做一款手游地图的
- mysql 隔离级别 知乎_TiDB 事务隔离级别
- MySQL 的实时性能监控利器
- nextcloud+nginx+mysql_nextcloud网盘搭建:Ubuntu18.04+Nginx+Mysql
- [误将两块磁盘挂载到根目录][解决办法]
- 数据结构基础温故-5.图(上):图的基本概念
- 计算机会计凭证审核,记账凭证的审核
- 腾讯云服务器芯片,腾讯云星星海重磅发布首款自研GPU服务器 占据业界几宗“最”...
- 【PDF合并】滴滴出行电子发票及行程报销单【一页打印】
- 计算机技术专硕学哪些课程,计算机专业考研需要考哪些科目
- pdo 参数绑定中 where 子句中的错误的解决
- QQ相关(一)【导出所有QQ好友】
- mysql分数占百分比查询
- 假装搞运维,MySQL让我哭
- 多无人机辅助移动边缘计算中的任务卸载和轨迹优化
- UDP 不阻塞的原因
热门文章
- 什么是分布式事务以及有哪些解决方案?
- 链接oracle 无监听程序,连接ORACLE 无监听程序
- 手写html基础格式,手写服务器_HTML 简单入门知识
- mysql最高权限超级用户是_MySQL中,预设的、拥有最高权限超级用户的用户名为( )...
- MATLAB基本语法 初学者
- linux sort 时间排序,linux sort多字段排序实例解析
- vivado中的rtl中电路图无发生成_FPGA零基础学习:数字电路中的组合逻辑
- yum源无法安装mysql_Centos7上使用官方YUM源安装Mysql
- 动态链接库和静态库的区别
- 视频清晰度、色偏以及亮度异常检测