Apache Storm是由twitter开源的分布式实时计算系统。Storm可以非常容易并且可靠的处理无限的数据流。对比Hadoop的批处理,Storm是一个实时的、分布式的、具备高容错的计算系统。Storm应用可以使用任何编程语言来进行开发。
基本组件
拓扑图
图中的水龙头(spout)和后面的处理单元(bolt)组成了一个拓扑图,该拓扑图就是一个storm应用(topology)。其中spout用来源源不断的读取消息并发送出去,后面的处理单元(bolt)处理消息,并传递到后面其他的处理单元(bolt)。
### 核心术语
在storm中有一些核心基本术语,包括topology、nimbus、supervisor、worker、executor、task、spout、bolt、tuple、stream、stream分组等。
1、topology 一个实时计算应用逻辑上被封装在topology对象中,类似与hadoop中的作业。与作业不同的是,topology会一直运行到显示的结束该topology。
2、nimbus 负责资源分配和任务调度,类似于hadoop中的jobtracker。
3、supervisor 负责接收nimbus分配的任务,启动和停止属于自己管理的worker进程,类似与hadoop中的tasktracker。
4、worker 运行具体处理组件逻辑的进程。
5、executor worker进程中的具体的物理线程,同一个spout/bolt的task可能会共享一个物理线程,一个executor中只能运行隶属于同一个spout/bolt的task。
6、task 每一个spout/task具体要做的工作,也是各个节点之间进行分组的单位。
7、spout 在topology中负责产生源数据流的组件。通常spout获取数据源的数据(kafka、mq等读取数据),然后调用nextTuple函数,发送数据供bolt消费。
8、bolt 在topology中接收spout提供的源数据然后执行数据处理的组件。bolt可以执行过滤、处理处理、数据合并、数据持久化等任何操作。bolt接收到消息后会调用execute函数,用户可以在其中执行自己想要的业务逻辑。
9、tuple 消息传递的基本单元。
10、stream 数据流,源源不断传递的tuple组成了stream。
11、stream group 消息的分区(partition)方法。storm中提供若干使用的分组技术,包括shuffle、fields、all、global、none、direct和local or shuffle等。