一、概述
Storm 是一个开源的分布式实时计算系统,可以简单可靠的处理大量的数据流。Storm可以很多的 应用场景:实时分析,在线机器学习,持续计算,分布式RPC,ETL等。Storm支持水平扩展,具有高容错性,保证每个消息都会得到处理,而且处理速度很快(在一个小集群中,每个节点每秒都可以处理数以百万计的消息)。Storm的部署和运维都很便捷,而且是可以使用任意的编程语言来开发应用。
二、Strom结构
- 结构:
storm结构称为topology(拓扑),由Stream(数据流),spout(喷嘴-数据流的生成者,连接转换数据流,不处理任何的业务逻辑,数据的转换者和流的发送者),bolt(阀门-数据流运算者,可以接受一个或者多个组件的流,进行处理,可以发送给其他多个bolt,依此类推,bolt是一个stream的消费者也是一个stream的产生者)组成。可以组成一个复杂的数据处理流的拓扑网络。拓扑网络优势:把大问题拆分成小步骤,把每一个小问题拆分成一个小的bolt,利用分布式的方式分布到不同机器上并行的进行处理。
不同于Hadoop的job,Storm中的topology会一直运行下去,除非进程被杀死获取取消部署。 - Stream
Storm的核心数据结构是tuple(元组),本质上是包含了一个或者多个键值对的列表。Stream是由无限的tuple组成的序列。 - Spout
spout连接数据源,将数据转化成为一个个的tuple,并将tuple作为数据流进行发射。开发一个spout 的主要工作就是利用API编写代码从数据源消费数据流。
spout的数据源可以有很多种来源:
web或者移动程序的点击流
社交网络信息
传感器收到的数据
应用程序产生的日志信息
spout通常指负责转换数据、发射数据,通常不会用于处理业务逻辑,从而可以很方便的实现spout的复用。 - bolt
主要负责数据的运算,将接收到的数据实施运算后,选择性的输出一个或者多个数据流。
一个bolt可以接收多个由spout或者bolt发射的数据流,从而可以组件出复杂的数据转换和处理网络拓扑结构。
bolt常见的典型功能:
- 过滤
- 连接和聚合
- 计算
- 数据库的读写