【Storm流式处理框架第二期】Storm计算模型

Topology – DAG有向无环图的实现

对于Storm实时计算逻辑的封装,即,由一系列通过数据流相互关联的SpoutBolt所组成的拓扑结构。

生命周期:此拓扑只要启动就会一直在集群中运行,直到手动将其kill,否则不会终止(区别于MapReduce当中的JobMR当中的Job在计算执行完成就会终止)

Tuple – 元组

Stream中最小数据组成单元

Stream – 数据流

Spout中源源不断传递数据给Bolt、以及上一个Bolt传递数据给下一个Bolt,所形成的这些数据通道即叫做Stream

Stream声明时需给其指定一个Id(默认为Default),实际开发场景中,多使用单一数据流,此时不需要单独指定StreamId

Spout – 数据源

拓扑中数据流的来源。一般会从指定外部的数据源读取元组(Tuple)发送到拓扑(Topology)中

一个Spout可以发送多个数据流(Stream),可先通过OutputFieldsDeclarer中的declare方法声明定义的不同数据流,发送数据时通过SpoutOutputCollector中的emit方法指定数据流IdstreamId)参数将数据发送出去

Spout中最核心的方法是nextTuple,该方法会被Storm线程不断调用、主动从数据源拉取数据,再通过emit方法将数据生成元组(Tuple)发送给之后的Bolt计算

Bolt – 数据流处理组件

拓扑中数据处理均有Bolt完成。对于简单的任务或者数据流转换,单个Bolt可以简单实现;更加复杂场景往往需要多个Bolt分多个步骤完成

一个Bolt可以发送多个数据流(Stream),可先通过OutputFieldsDeclarer中的declare方法声明定义的不同数据流,发送数据时通过SpoutOutputCollector中的emit方法指定数据流IdstreamId)参数将数据发送出去

Bolt中最核心的方法是execute方法,该方法负责接收到一个元组(Tuple)数据、真正实现核心的业务逻辑

总结

Storm的计算模型相当于一个DAG(有向无环图),由Spout(源节点)发出数据流,Bolt充当DAG中的中间节点,而目标节点(终节点)也是一个Bolt,只不过它没有再向其他Bolt发送数据流。整个DAG由用户根据算法自定义,可以是线性结构,也可以是很复杂的图,相比MapReduce单一的计算模型显得更加灵活多变。【Storm流式处理框架第二期】Storm计算模型_第1张图片

你可能感兴趣的:(分布式计算,Storm)