综合百科

Storm基本概念是什么

1、Storm基本概念:

Nimbus:负责资源分配和任务调度

Supervisor:负责Nimbus分配的任务,启动和停止属于自己管理的worker进程

Worker:运行具体理逻辑的组件进程

Spout/bolt(Task):worker中每一个(Spout/Bolt)线程称为一个Task,在storm0.8版本之后,task不再与物理线程对应,同一个Spout/Bolt的Task可能共享一个物理线程,该线程称为executor

Topology:所有组件(即Spouts/Bolts)的排列与连接被称之为一个Topology

Spout:产生源数据流的组件

Bolt:接收、执行数据的组件

Tuple:消息传递的基本单元(将消息放在Tuple中进行传输)

Stream:源源不断的传递的Tuple组成了Stream

数据处理的过程:

处理工作被分派给不同类型的组件(components),每个组件分别负责一个简单、特定的处理任务。处理Storm集群输入流的组件叫喷口(spout),喷口再将数据传给一个叫螺栓(bolt)的组件,并在螺栓中处理数据,处理完成之后,螺栓要么将这些数据存储起来(存储在数据库、磁盘甚至是对象中),要么将它传给其他螺栓。因此,可以将Storm集群想象成一个螺栓链,每个螺栓都会对喷口发送的数据作出一些处理。

2、Storm特性(优势/好处)

编程简单、支持多种语言编程、容错、可扩展、可靠、快速、事务性

与其它实时计算系统(s4, puma)的区别

记录级容错:告知用户每一个消息单元是否在指定的时间内被完全处理(消息单元是否完全经过Topology每一个Bolt组件的处理)

1、Spout在发送一个新源时会为Tuple指定一个Message Id(这个MessageId可以是任意对象)

2、Topology中有一个系统级组件叫acker,acker追踪每一个从Spout中绑定MessageId所流出来的若干个Tuple的处理路径

3、如果用户设置的最大超时时间内这些tuple没有被完全处理,那么acker就会告知spout该消息处理失败了,相反则会告知spout该消息处理成功了

事务拓扑(Transactional Topology):storm0.7版本引入的新特性,在0.8版本替换为Trident,在0.9版本弃用,目的是为了满足对消息处理有着极其严格要求的场景,例如实时计算某个用户的成交笔数,要求结果完全精确,不能多也不能少。