Storm Bolt接口
Bolt是Topology中数据处理的基本单元,也是Storm针对处理过程的编程单元。Topology中所有的处理都是在这些bolt中完成的。 Bolt可以将数据项发送至多个数据流(Stream)。编程人员首先可以使用OutputFieldsDeclarer类的declareStream()方法声明多个流,指定数据将要发送到的流,然后使用SpoutOutputCollector的emit方法将数据发送(原生spout)。
Storm为Bolt提供的编程抽象,以接口的形式,面向接口的编程风格。其中IRichBolt是使用Java语言实现Bolt最主要的接口。事实上,IRichBolt本身并未提供更多属性或方法,只是扩展了(extends)另外两个接口IBolt和IComponent。
IRichBolt是使用Java语言实现Bolt最主要的接口,拓展了(extends)另外两个接口IBolt和IComponent.。接口包含的方法有prepare(in stormConf,in context,in collector):void,execute(in tuple) :void,cleanup():void。最重要的方法是execute(),该方法接收一个数据项作为输入。Bolt可以将处理后的结果作为新的Tuple,使用OutputCollector对象的emit()方法发送。Bolt可以在OutputCollector中对每一个发送数据项调用ack()方法,使得storm能够追溯这个数据项是否被完整处理。
IBolt和IComponent接口
1、prepare()与cleanup() void prepare(java.util.Map.stormConf,TopologyContext context,OutputCollector collector)
prepare()用于实例化Bolt的一个运行时任务,被集群中某一进程调用,提供Bolt运行的环境。prepare()方法三个参数:stormConf,context,collector.
(1)sotrmConf对象维护Storm中针对该Bolt的配置信息。这些配置信息是Topology提供的,被集群中运行该Bolt的机器使用。
(2)context上下文对象,用于获取该组件运行时任务的信息。
(3)collector对象用于从该Bolt发送数据项。
2、execute()
该方法用于Bolt从Topology中接收一个数据项(Tuple),并可以将处理的结果作为新的数据项发送(emit),是Bolt需要实现的最重要的方法。这个方法的参数input是一个数据项对象,它包含了众多的元数据(metadata),包括它来自的组件、流、任务等。数据项中的值,可以通过Tuple类的getValue()方法获得。处理结果的发送是通过在prepare()方法中提供的OutputCollector对象,调用emit方法实现。
3、IBasicBolt和BaseBasicBolt
在许多场景下Bolt的数据处理,都需要确认处理完成或认定失败。需要代码emit数据和调用ack/fail。Storm提供了另一个用来实现Bolt的接口IBasicBolt,用于该接口的实现类,会在执行execute方法之后自动调用ack方法。
Storm Bolt接口的更多相关文章
- Storm bolt重复消费问题解决
最近碰到一个storm的坑, 两个bolt都需要从kafkaSpout中获取数据进行各自的业务处理, bolt1的处理是幂等的, bolt2的处理是非幂等的, 上线后发现非幂等的bolt处理总是会处理 ...
- Storm介绍(一)
作者:Jack47 PS:如果喜欢我写的文章,欢迎关注我的微信公众账号程序员杰克,两边的文章会同步,也可以添加我的RSS订阅源. 内容简介 本文是Storm系列之一,介绍了Storm的起源,Storm ...
- storm源码之storm代码结构【译】【转】
[原]storm源码之storm代码结构[译] 说明:本文翻译自Storm在GitHub上的官方Wiki中提供的Storm代码结构描述一节Structure of the codebase,希望对正 ...
- 【原】storm源码之storm代码结构【译】
说明:本文翻译自Storm在GitHub上的官方Wiki中提供的Storm代码结构描述一节Structure of the codebase,希望对正在基于Storm进行源码级学习和研究的朋友有所帮助 ...
- storm源码之storm代码结构【译】
storm源码之storm代码结构[译] 说明:本文翻译自Storm在GitHub上的官方Wiki中提供的Storm代码结构描述一节Structure of the codebase,希望对正在基于S ...
- Apache Storm 1.1.0 发布概览
写在前面的话 本人长期关注数据挖掘与机器学习相关前沿研究.欢迎和我交流,私人微信:846731084 我自己测试了一下这个版本,总的来说更加稳定,新增的特性并没有一一测试,仅凭kafk-client来 ...
- Storm日志分析调研及其实时架构
1.Storm第一个Demo 2.Windows下基于eclipse的Storm应用开发与调试 3.Storm实例+mysql数据库保存 4.Storm原理介绍 5. flume+kafka+stor ...
- SpringBoot整合Kafka和Storm
前言 本篇文章主要介绍的是SpringBoot整合kafka和storm以及在这过程遇到的一些问题和解决方案. kafka和storm的相关知识 如果你对kafka和storm熟悉的话,这一段可以直接 ...
- Storm入门(十)Twitter Storm: Transactional Topolgoy简介
作者: xumingming | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明网址: http://xumingming.sinaapp.com/736/twitter-stor ...
随机推荐
- myeclipse注册码生成器
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader; public cl ...
- session没有过期,其保存的数据无故丢失的原因
问题: 我们经常会做到的一个功能,将登录用户信息保存到session中,在页面上显示登录用户名.但是,如果很短时间内甚至几秒没有刷新这个页面的话,这个用户名就消失了,其实就是session中保存的用户 ...
- Linux学习 : 裸板调试 之 使用MMU
MMU(Memory Management Unit,内存管理单元),操作系统通过使用处理器的MMU功能实现以下:1)虚拟内存.有了虚拟内存,可以在处理器上运行比实际物理内存大的应用程序.为了使用虚拟 ...
- linux上安装php+gd扩展
515 cd zlib-1.2.3 516 ./configure --prefix=/usr/local/zlib2 517 make && make install 518 cd ...
- Term_Application
1 CRM(Customer Relationship Management)客户关系管理: (对ERP下游管理不足的补充) 是一个获取.保持和增加可获利客户的方法和过程. 市场营销.销售管理.客户关 ...
- React Native中的网络请求fetch和简单封装
React Native中的网络请求fetch使用方法最为简单,但却可以实现大多数的网络请求,需要了解更多的可以访问: https://segmentfault.com/a/1190000003810 ...
- SQL Analysis Services MDX 查询超时 解决办法
当页面有很多MDX语句查询的时候,会发生超时的情况. 解决办法: SQL Analysis Services所在的服务器(OLAP的文件夹下) 找到: msmdpump.ini 将: <Conf ...
- HDU 3006
http://acm.hdu.edu.cn/showproblem.php?pid=3006 注意到集合内数字最大只有14,状态压缩一下,然后枚举出所有状态 #include <iostream ...
- Map/Reduce 工作机制分析 --- 错误处理机制
前言 对于Hadoop集群来说,节点损坏是非常常见的现象. 而Hadoop一个很大的特点就是某个节点的损坏,不会影响到整个分布式任务的运行. 下面就来分析Hadoop平台是如何做到的. 硬件故障 硬件 ...
- Map/Reduce 工作机制分析 --- 作业的执行流程
前言 从运行我们的 Map/Reduce 程序,到结果的提交,Hadoop 平台其实做了很多事情. 那么 Hadoop 平台到底做了什么事情,让 Map/Reduce 程序可以如此 "轻易& ...