Storm简介
Storm是一个免费开源的分布式实时计算系统。利用 Storm 可以很容易做到可靠地处理无限的数据流。
数据在发往 Storm之前,一般会将数据直接存放到 MQ 中,如 Kafka。Storm 再从Kafka 中读取数据,因为Storm 只负责消费数据,并不提供数据缓存。
相比于 Hadoop,Storm 更注重数据的实时性,而 Hadoop 则更侧重于批处理,各有优点。
基础概念一览
Nimbus:Master 节点,负责分发 topology 给 supervisor
- Storm 集群的 Master节点,负责管理分发Topology,并指派给具体的 Supervisor 节点上的 worker 进程,由 Worker来运行 Topology 的Spout 或者 Bolt 的 Task.
Supervisor: Slave 节点,负责管理 Worker 进程的生命周期
Worker: 具体处理组件逻辑的进程
- Worker运行的任务只有两种类型,一种是 Spout,另一种是 Bolt。
Task: 逻辑上的一个概念,worker 上运行的 每一个Spout或Bolt 被称为一个 task。 Task不和线程一一对应,一个 executor 可能会运行不同的 task。
Executor: Worker 进程所启动的线程, 用于执行 Task。
Topology:一个真正运行的,通过Stream Group相互关联的Spout和Blot组成的拓扑结构。
- Spout: 数据来源,通过
nextTuple
方法从外部主动获取数据并以Tuple Stream的形式发送。 - Bolt: 消费InputStream,产生OutputStream,是Topology中的业务处理模块。
- 数据模型:Spout->Tuple->Bolts, 数据流从 spout 开始,以 tuple 的形式发送到 bolt,一个 bolt 可以接入多个 Spout/Blot
- Spout: 数据来源,通过
Stream: tuple 的集合,流动的 tuple
Stream groupings: 数据流分组,定义了在 Bolt 的不同任务(tasks)中划分数据流的方式。