天天看点

Storm实时流处理原理与实践之一:Storm基本概念

文章目录

    • 简介
    • Storm流处理概念
    • Storm架构

简介

Apache Storm是一个分布式的实时计算框架,用于实时分析、机器学习、连续计算、分布式RPC、ETL等等。

Storm的topology消费数据流,对数据流做各种复杂处理,可以分区并在各个阶段stage对流做计算。Storm内在的并发机制使得可以达到高吞吐量和低延时。

Storm流处理概念

Storm需要掌握以下几个概念:Topology、Spout、Bolt。下面先从一张图来直观的了解:

Storm实时流处理原理与实践之一:Storm基本概念

流处理可以将数据流想象为水流,原始数据流进入喷水孔(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。

Storm实时流处理原理与实践之一:Storm基本概念

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

继续阅读