Storm集群体系结构


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

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

Zookeeper框架

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

主管将有一个或多个工作进程。主管会将任务委派给工作进程。工作进程将根据需要产生尽可能多的执行程序并运行任务。Apache Storm使用内部分布式消息系统来实现nimbus和主管之间的通信。

组件 描述
Nimbus Nimbus是Storm集群的主节点。群集中的所有其他节点都称为工作节点。主节点负责在所有工作节点之间分配数据,将任务分配给工作节点并监视故障。
Supervisor 遵循nimbus给出的指令的节点称为Supervisor。主管具有多个工作进程,它管理工作进程以完成由nimbus分配的任务。
Worker process 工作进程将执行与特定拓扑相关的任务。工作进程本身不会运行任务,而是创建执行程序并要求它们执行特定任务。工作进程将具有多个执行程序。
Executor 执行程序只是由工作进程生成的单个线程。执行程序运行一个或多个任务,但仅针对特定的喷口或Bolts。
Task 任务执行实际数据处理。所以,它是一个喷口或一个螺栓。
ZooKeeper framework

Apache ZooKeeper是一个集群(节点组)使用的服务,用于在它们之间进行协调,并使用强大的同步技术维护共享数据。Nimbus是无状态的,因此它依赖于ZooKeeper来监视工作节点状态。ZooKeeper帮助主管与灵气接触。它负责维护灵气和主管的状态。

Storm本质上是无国界的。尽管无状态自然有它自己的缺点,但它实际上有助于Storm以最佳和最快的方式处理实时数据。

尽管Storm 并非完全 无国籍。它将其状态存储在Apache ZooKeeper中。由于状态在Apache ZooKeeper中可用,因此可以重新启动失败的nimbus并使其从离开的地方开始工作。通常,像 monit 这样的服务监视工具将监视Nimbus并在出现故障时重新启动它。

Apache Storm还具有称为 Trident拓扑 的高级拓扑,并具有状态维护功能,并且还提供了像Pig这样的高级API。我们将在接下来的章节中讨论所有这些功能。