-
什么是Storm
-
Storm的基本术语
-
Storm组件协作图
-
Storm消息机制
什么是Storm
Storm用于流式计算和实时计算,简称实时流计算。实时流计算的三种常见场景:事件流、持续计算和分布式远程方法调用。流式计算框架如Storm关注于数据多次处理,一次写入;是批处理计算框架如Hadoop关注于数据一次写入,多次查询统计以提取有用信息。
The input stream of a Storm cluster is handled by a component called a spout. The spout passes the data to a component called a bolt, which transforms it in some way. A bolt either persists the data in some sort of storage, or passes it to some other bolt. You can imagine a Storm cluster as a chain of bolt components that each make some kind of transformation on the data exposed by the spout.
- Storm与Hadoop 1.x的角色对比
Storm基本术语
- Toplogy
Toplogy是Storm中运行的一个任务,类比Hadoop1.x中的一个作业(Job)
- Nimbus
Nimbus在Storm中用于资源分配和作业调度,类比Hadoop1.x中的JobTracker
- Supervisor
Supervisor在Storm中用于接受Nimbus分配的任务,并且启动和停止用于完成这些任务的Worker进程。Supervisor类比Hadoop1.x中的TaskTracker
- Worker
运行Storm中具体组件逻辑的进程。这里的组件指的是Spout或者Bolt,对比Hadoop1.x的Child进程
- Task
Worker进程中每个运行Spout或者Bolt组件逻辑的线程称为Task
- Spout
在一个Toplogy中产生源数据流的组件
- Bolt
在一个Toplogy中接受数据,并进行逻辑处理的组件,称为Transformation
- Tuple
一次消息传递的基本单元
- Stream Grouping
消息分组的方法
Storm作业协作图
可见,Storm是一个典型的Master/Workers架构。Nimbus和Supervisors构成一组Master/Workers架构,Supervisor和Workers构成一组Master/Workers架构。
从上面的图中可以看到,Bolts之间是一种流式的计算,一份数据在多个Bolt之间进行处理转换,每种类型的Bolt可以是一个集群,因此,这种架构的可扩展性是天然的。
Storm的消息机制
如上图所示,Spout和Bolt之间,多个Bolt之间,有数据的传输,Storm底层是ZeroMQ作为消息队列的管理,Storm保证消息能够快速的被消费(性能),同时保证消息能够被消费(可靠性)
参考:http://wenku.baidu.com/view/3b695d5c7fd5360cba1adbf3.html