Storm 是一个开源的分布式、实时、可扩展、容错的计算系统,Storm 可以可靠地处理无限数据流,像 MapReduce 和 Spark 批量处理离线数据一样。可用于实时分析、在线机器学习、连续计算、分布式 RPC、ETL 等。
架构
Storm 分布式集群主要由一个控制节点(Nimbus 节点)和多个工作节点(Supervisor节点)组成。
Zookeeper负责Nimbus 和Supervisor 节点之间的协调工作
Nimbus节点负责资源分配和任务分配,通过Zookeeper监控Supervisor状态,Supervisor节点定期接受Nimbus节点分配任务,并会从Nimbus下载代码,启动对应的worker进程并监控worker 状态,每一worker是一个独立的JVM进程,Worker中运行Spout/Bolt线程Task任务,Storm使用zookeeper来协调整个集群,状态信息(Nimbus分发的任务、Supervisor、worker的心跳等)都保存在Zookeeper上。