Storm基础(三)--Storm架构原理

概述

Storm可以方便地在一个计算机集群中编写与扩展复杂的实时计算,Storm之于实时处理,就好比Hadoop之于批处理。Storm保证每个消息都会得到处理,而且它很快——在一个小集群中,每秒可以处理数以百万计的消息。Storm的处理速度非常惊人:经测试,每个节点每秒可以处理100万个数据元组。

设计思想

在Storm中也有对流(Stream)的抽象,流是一个不间断的、无界的连续TupleTuple是包含一个或多个键值对的集合

Storm认为每个流都有一个Stream源,也就是原始元组的源头,所以它将这个源头抽象为Spout(水龙头),Spout可能连接Twitter API并不断发出推文(Tweet),也可能从某个队列中不断读取队列元素并装配为Tuple发射。

有了源头即Spout也就是有了流,同样的思想,Twitter将流的中间状态转换抽象为Bolt,Bolt可以消费任意数量的输入流,只要将流方向导向该Bolt,同时它也可以发送新的流给其他Bolt使用,这样一来,只要打开特定的Spout(管口),再将Spout中流出的Tuple导向特定的Bolt,由Bolt处理导入的流后再导向其他Bolt或者目的地

假设Spout就是一个一个的水龙头,并且每个水龙头里流出的水是不同的,想获得哪种水就拧开哪个水龙头,然后使用管道将水龙头的水导向到一个水处理器(Bolt),水处理器处理后使用管道导向另一个处理器或者存入容器中。如下图所以Spout、Tuple和Bolt之间的关系和流程。

这样一来,只要打开特定的Spout(管口),再将Spout中流出的Tuple导向特定的Bolt,由Bolt处理导入的流后再导向其他Bolt或者目的地。为了增大水处理效率,可以在同一个水源处接上多个水龙头并使用多个水处理器,如下图所示:


综上,我们可以Storm整个的流程图看做是一个有向无环图,更抽象的来说,是一个拓扑图,如下图所示:

Storm将这个图抽象为Topology(即拓扑),拓扑是Storm中最高层次的一个抽象概念,提交拓扑到Storm集群执行。

Topology(拓扑)的概念

Storm分布式计算结构称为topology(拓扑),由stream(数据流),spout(数据源的生成者),bolt(运算)组成。Storm topology大致等同与Hadoop这类批处理运算中的job。然而,批处理运算中的job对运算的起始和终止有着明确定义,Storm topology会一直运行下去,除非进程被杀死或被取消部署。

1Stream

Stream是由无限制连续的tuple组成的序列,tuple是Storm最核心的数据结构,每个Tuple都是包含了一个或者多个键值对的列表。

2spout

spout代表了一个Storm topology的主要数据入口,充当采集器的角色,连接到数据源,将数据转化为一个个tuple,并将tuple作为数据流进行发射。

开发一个spout的主要工作就是编写代码从数据源或者API消费数据。数据源可能包括以下几种:

Web或者移动程序的点击流

Twitter或其他社交网络的消息

传感器的输出

应用程序的日志事件

3bolt

bolt可以理解为计算程序中的运算或者函数,将一个或者多个数据流作为输入,对数据实施运算后,选择性地输出一个或者多个数据流。bolt可以订阅多个由spout或者其他bolt发射的数据流,这样就可以建立复杂的数据流转换网络

猜你喜欢

转载自blog.csdn.net/weixin_44481878/article/details/88871514