文章目录
-
- 简介
- Storm流处理概念
- Storm架构
简介
Apache Storm是一个分布式的实时计算框架,用于实时分析、机器学习、连续计算、分布式RPC、ETL等等。
Storm的topology消费数据流,对数据流做各种复杂处理,可以分区并在各个阶段stage对流做计算。Storm内在的并发机制使得可以达到高吞吐量和低延时。
Storm流处理概念
Storm需要掌握以下几个概念:Topology、Spout、Bolt。下面先从一张图来直观的了解:

流处理可以将数据流想象为水流,原始数据流进入喷水孔(Spout),经过各个螺栓(Bolt)分流处理,最终将计算结果保存在数据库等。其中数据流是tuple stream。tuple是Storm中的基本数据结构,tuple可以理解为一个有序字段列表,每个字段(filed)可以是任何数据类型。通过Bolt中的declare来生声明tuple中的字段名称(newFields(“name1”,“name2”)), 所有的数据处理在Bolt内完成。整个Spout和Bolt构成一个拓扑图,称为Topology。
Storm架构
Storm是主从架构,Nimbus主节点将job分发给Supervisor启动Worker进程,Worker启动Executor线程池执行Task。
Nimbus和Supervisor通过Zookeeper实现信息交互,其往Zookeeper写数据,由另一方读取数据,达到信息的同步。
Nimbus主节点运行和分析topology,分发task给Supervisor。在Zookeeper的znode写入job信息,Supervisor来读取znode的信息。 Storm的daemons、Nimbus 、Supervisors被设计成无状态的和fail-fast,依靠Zookeeper监控节点状态,如果Worker进程故障会自动重启,如果节点故障会启动其他节点,以达到高容错。
Supervisor拿到job后,启动多个Worker进程,Worker启动多个Executor线程池,Executor运行的task都属于同一Spout或Bolt。
参考资料
http://storm.apache.org/releases/1.0.6/index.html
https://www.tutorialspoint.com/apache_storm/apache_storm_tutorial.pdf