Storm

Storm 集群

Storm集群上有两种节点:主节点和工作节点。 Storm run topologies 每秒可以访问数万条消息

  • 主节点运行一个名为Nimbus的守护程序。Nimbus负责在集群中分发代码,向计算机分配任务以及监视故障。
  • 每个工作程序节点都运行一个称为“ Supervisor”的守护程序。主管侦听分配给其机器的工作,并根据Nimbus分配给它的工作,根据需要启动和停止工作进程。
  • 每个工作进程执行一个拓扑子集;一个正在运行的拓扑由分布在许多计算机上的许多工作进程组成。

Nimbus守护程序和Supervisor守护程序是快速故障且无状态的。所有状态都保存在Zookeeper或本地磁盘中,使Storm集群非常稳定。

Zookeeper作为分布式协调组件,负责Nimbus和多个supervisor之间的协调工作。

Storm

Topologies

A topology is a graph of computation. Each node in a topology contains processing logic, and links between nodes indicate how data should be passed around between nodes.

一个拓扑就是一个计算图谱。拓扑中的每一个节点包含着处理逻辑,以及表明数据如何在节点间传递的很多链接。可以使用任何编程语言来创建和提交拓扑。

stream

A stream is an unbounded sequence of tuples。Storm提供以分布式的、可靠的方式提供流的转换。

Storm提供处理流转换的基本原语是spoutsbolts

  • spouts 流的源 接收原始数据(tuples) 作为流发射它们
  • bolts Spouts将数据传递到Bolts和Bolts过程,并产生新的输出流。Bolts可以执行过滤,聚合等操作

Spouts和Bolts连接在一起,形成拓扑结构。实时应用程序逻辑在Storm拓扑中指定。简单地说,拓扑是有向图,其中顶点是计算,边缘是数据流。

其中每个节点都是Spouts或Bolts。图中的边缘指示哪些Bolts正在订阅哪些流。当Spouts或Bolts向流中发送元组时,它将元组发送给订阅该流的每个Bolts。拓扑中节点之间的链接指示元组应如何传递。

Storm拓扑中的每个节点都并行执行。在拓扑中,您​​可以指定每个节点要多少并行度,然后Storm将在集群中产生该数量的线程来执行。

拓扑将永远运行,或者直到您杀死它为止。Storm将自动重新分配所有失败的任务。此外,Storm保证即使机器宕机和消息丢失也不会丢失数据。

Tuple

无限Tuple序列

spouts

Tuple序列源头

bolts

Tuple序列源头

bolts

处理Tuples ,创建stream。

steam group

告知Topology如何在两个组件之间进行Tuple传输。