Apache Storm的主要亮点之一是它是一个容错,快速,没有“单点故障”(SPOF)的分布式应用程序。 我们可以根据需要在尽可能多的系统中安装Apache Storm,以提高应用程序的性能。


我们来看看Apache Storm Cluster的设计方式和内部架构。 下图描述了Cluster的设计

image.png

Apache Storm有两种类型的节点:Nimbus(主节点)和Supervisor(工作节点)。 NimbusApache Storm的核心组件, Nimbus的主要工作是运行Storm Topology Nimbus分析Topology并收集要执行的任务, 然后,它会把任务分配给可用的Supervisor节点。

 

Supervisor有一个或多个工作进程,它把任务委派给工作进程。 工作进程将根据需要产生尽可能多的executor并运行任务。 Apache Storm使用内部分布式消息系统来实现NimbusSupervisor之间的通信。

 

组件

描述

Nimbus

NimbusStorm Cluster的主节点, Cluster中的所有其他节点都称为工作节点(Worker   node)。 主节点负责在所有工作节点之间分配数据,给工作节点分配任务并监控故障。

Supervisor

遵循由Nimbus给出的指令的节点被称为Supervisor Supervisor拥有多个工作进程,并负责管理工作进程以完成Nimbus分配的任务。

Worker process

工作进程执行与特定Topology相关的任务。 工作进程本身不会运行任务,而是创建executor来执行特定的任务。 一个工作进程将有多个executor

Executor

Executor只是工作进程产生的单个线程。 一个Executor只为特定的SpoutBolt运行一个或多个任务。

Task

任务执行实际的数据处理,所以,它要么是Spout,要么是Bolt

Zookeeper   framework

Apache ZooKeeper是由Cluster(节点组)使用的服务,用于协调节点之间的关系,并使用强大的同步技术来维护共享数据。 Nimbus是无状态的,所以它依赖于ZooKeeper来监控工作节点的状态。

 

ZooKeeper帮助SupervisorNimbus交互,它负责维护NimbusSupervisor的状态。

 

 

Storm是无状态的,虽然无状态这个性质有一些缺点,但它实际上有助于Storm以最佳和最快的方式处理实时数据。

 

但是Storm并非完全无状态,它只是把其状态存储在Apache ZooKeeper中。 由于状态在Apache ZooKeeper中可用,因此可以重新启动失败的nimbus并使其从断点开始工作。通常,像monit这样的服务监控工具可以被用来监控Nimbus并在出现故障时重新启动这个Nimbus

 

Apache Storm还有一个被称为Trident Topology的高级Topology,它具备状态维护功能,并且还提供了像Pig这样的更高层次的API 我们将在接下来的章节中讨论这些功能。



关注微信服务号,手机看文章
关注微信服务号,手机看文章