1.Apache Storm概述
- Apache Storm是一款免费开源的分布式实时计算的框架(流处理)
- Apache Storm可以非常容易并且可靠的处理无界的流数据,进行实时的分析处理。
- Apache Storm支持多种编程语言(1.x版本Clodure 2.x版本Java重构)。适用场景:实时分析,在线的机器学习,持续计算,分布式的RPC,ETL(数据仓库)。Storm性能极其优异:性能测试单个节点每秒能够处理百万条Tuple(类似于kafka中的record)。
- Apache Storm可以非常容易和队列和数据库产品进行无缝集成。
2.架构
2.1 架构中的核心概念
- Topoloy:一个流数据处理的应用。topology 类似于Hadoop中的MapReduce任务,不同之处在于,MapReduce负责有界的数据的计算,任务一定终止。但是Topology一旦运行,除非人为终止,否则持续运行下去。
- Nimbus(Storm集群的master):支持主备集群。主要作用:接收storm客户端提交的Topology应用,并且分发倒霉给supervisor,在supervisor执行计算时,还可以进行故障检测。
- Supervisor(Storm集群的slave服务):管理Worker(计算容器)的启动和销毁,接收nimbus分配的任务。
- Worker(JVM进程):独立计算容器,任务真实运行。
- Executors(线程Thread):worker中一个线程资源,有一到多个Executors。
- Task(任务):Topology中的一个计算单元,支持并行Task。
- Zookeeper(分布式服务协调系统): 负责Storm集群元数据及状态数据的存储,在Storm集群中
nimbus
和supervisor
无状态服务,Storm
集群是极其健壮。