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();
AI 代码解读


IComponent.java


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


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();
AI 代码解读




目录
相关文章
|
9月前
|
Storm详细配置
Storm详细配置
117 0
CoreBolt——在倚天上基于 Coresight 做 BOLT 优化
CoreBolt 是一种倚天平台的性能优化解决方案。CoreBolt 通过 Coresight 在程序运行时采集程序运行信息,对程序的热代码和冷代码进行区分,并通过 BOLT 对程序进行代码段重排,从而提升程序代码的局部性,减少程序运行过程中由 CPU iCache miss 和 iTLB miss 引发的性能下降,提升程序的整体性能。
872 6
gRPC阅读日记(四)Client-side streaming RPC and Bidirectional streaming RPC
gRPC阅读日记(四)Client-side streaming RPC and Bidirectional streaming RPC
Storm vs. Kafka Streams vs. Spark Streaming vs. Flink ,流式处理框架一网打尽!2
Storm vs. Kafka Streams vs. Spark Streaming vs. Flink ,流式处理框架一网打尽!2
489 0
Storm vs. Kafka Streams vs. Spark Streaming vs. Flink ,流式处理框架一网打尽!2
Storm vs. Kafka Streams vs. Spark Streaming vs. Flink ,流式处理框架一网打尽!1
Storm vs. Kafka Streams vs. Spark Streaming vs. Flink ,流式处理框架一网打尽!1
328 0
Storm vs. Kafka Streams vs. Spark Streaming vs. Flink ,流式处理框架一网打尽!1
Spark Streaming,Flink,Storm,Kafka Streams,Samza:如何选择流处理框架
根据最新的统计显示,仅在过去的两年中,当今世界上90%的数据都是在新产生的,每天创建2.5万亿字节的数据,并且随着新设备,传感器和技术的出现,数据增长速度可能会进一步加快。从技术上讲,这意味着我们的大数据处理将变得更加复杂且更具挑战性。而且,许多用例(例如,移动应用广告,欺诈检测,出租车预订,病人监护等)都需要在数据到达时进行实时数据处理,以便做出快速可行的决策。这就是为什么分布式流处理在大数据世界中变得非常流行的原因。
185 0
Spark Streaming,Flink,Storm,Kafka Streams,Samza:如何选择流处理框架
透视RPC协议:SOFA-BOLT协议源码分析
最近在看Netty相关的资料,刚好SOFA-BOLT是一个比较成熟的Netty自定义协议栈实现,于是决定研读SOFA-BOLT的源码,详细分析其协议的组成,简单分析其客户端和服务端的源码实现。当前阅读的源码是2021-08左右的SOFA-BOLT仓库的master分支源码。
396 0
透视RPC协议:SOFA-BOLT协议源码分析
【Flink】Flink 底层RPC框架分析
对于Flink中各个组件(JobMaster、TaskManager、Dispatcher等),其底层RPC框架基于Akka实现,本文着重分析Flink中的Rpc框架实现机制及梳理其通信流程。
471 0
【Flink】Flink 底层RPC框架分析
HBase rpc框架介绍
HBase的rpc框架有比较好的分层,便于在不同层次上进行实现优化和功能扩展。
1386 0
HBase rpc框架介绍
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等