storm : 是一种用于事件的流处理的分布式计算框架
应用场景 :
- 实时分析
- 实时统计
- 实时推荐
storm框架图
元组 (Tuple)
- 元组是消息传递的基本单元,是一个命名的值列表,元组中的字段可以是任何类型的对象
- 元组支持所有的基本类型,字符串和字节数组作为字段值
流(Stream) - 流是Storm的核心抽象,是一个无界的元组系列
Spout - Spout是拓扑的数据流的来源,Spout会从外部数据源读取数据,然后转换为拓扑内部的源数据
- Spout可以是可靠的,也可以是不可靠的
- Spout 的主要方法是nextTupl(),ack()和fail() ,【当Storm检测到一个元组从Spout发出时,ack()和fail()会被调
用,要么成功完成通过拓扑,要么未能完成】 - IRichSpout是Spout必须实现的接口
- Spout可以发出超过一个流
Bolt
- 在拓扑中所有的处理都在Bolt中完成,Bolt是流的处理节点
- Bolt可以完成过滤,业务处理,连接运算,连接和访问数据库等任何操作
- Bolt可以完成简单的流的转换,复杂的流
- Bolt可以发出超过一个的流
Topology
- 拓扑是Storm中运行的一个实时应用程序,因为各个组件间的消息流动形成逻辑上的拓扑结构
Strom的核心组件
- 总体流程:
- nimbus下命令(分配任务),zookeeper监督执行(心跳监控,worker,supervisor的心跳都归它管),supervisor接受命令(下载代码),创建worker和线程等,worker和executor 都会干活,Task就是具体要干的活
nimbus
- 是整个集群的控制管理核心,负责topology的提交,运行状态监控,任务重新分配工作
supervisor
- 监听其主机上已经分配的主机作业,启动和停止Nimbus已经分配的工作进程