一. Storm简介
Storm是一个分布式的、高容错的实时计算系统。
Storm对于实时计算的的意义相当于Hadoop对于批处理的意义。Hadoop为我们提供了Map和Reduce原语,使我们对数据进行批处理变的非常的简单和优美。同样,Storm也对数据的实时计算提供了简单Spout和Bolt原语。
Storm适用的场景
- 流数据处理:Storm可以用来用来处理源源不断的消息,并将处理之后的结果保存到持久化介质中。
- 分布式RPC:由于Storm的处理组件都是分布式的,而且处理延迟都极低,所以可以Storm可以做为一个通用的分布式RPC框架来使用。
二. Storm集群基本组件
Storm的集群表面上看和hadoop的集群非常像。但是在Hadoop上面你运行的是MapReduce的Job, 而在Storm上面你运行的是Topology。它们是非常不一样的,一个关键的区别是: 一个MapReduce Job最终会结束, 而一个Topology永远运行(除非你显式的杀掉他)。
在Storm的集群里面有两种节点:
- 控制节点(master node):控制节点上面运行一个后台程序Nimbus, 它的作用类似Hadoop里面的JobTracker。Nimbus负责在集群里面分发代码,分配工作给机器, 并且监控状态。
- 工作节点(worker node):每一个工作节点上面运行一个叫做Supervisor的进程(类似 TaskTracker)。Supervisor会监听分配给它那台机器的工作,根据需要 启动/关闭工作进程。每一个工作进程执行一个Topology(类似 Job)的一个子集