Apache Storm的一个主要亮点是它是一个容错,快速且没有"单点故障"(SPOF)分布式应用程序.我们可以根据需要在尽可能多的系统中安装Apache Storm,以增加应用程序的容量.
让我们看一下Apache Storm集群的设计方式及其内部架构.下图描绘了集群设计.
keeper Framework"/>
Apache Storm有两种类型的节点, Nimbus (主节点)和 Supervisor (工作节点). Nimbus是Apache Storm的核心组件. Nimbus的主要工作是运行Storm拓扑. Nimbus分析拓扑并收集要执行的任务.然后,它会将任务分配给可用的主管.
主管将有一个或多个工作进程.主管将任务委派给工作进程.工作进程将根据需要生成尽可能多的执行程序并运行该任务. Apache Storm使用内部分布式消息系统进行nimbus和主管之间的通信.
组件 | 描述 |
---|---|
Nimbus | Nimbus是Storm集群的主节点.群集中的所有其他节点都称为工作节点.主节点负责在所有工作节点之间分配数据,将任务分配给工作节点并监视故障. |
Supervisor | 遵循nimbus给出的指令的节点称为Supervisor. 主管有多个工作进程,它管理工作进程以完成由nimbus分配的任务. |
Worker process | 工作进程将执行与特定拓扑相关的任务.工作进程本身不会运行任务,而是创建执行程序并要求它们执行特定任务.工作进程将有多个执行程序. |
Executor | 执行程序什么都不是但是由工作进程产生的单个线程.执行程序运行一个或多个任务,但仅针对特定的喷口或螺栓. |
Task | 任务执行实际数据处理.所以,它是一个喷口或一个螺栓. |
ZooKeeper framework | Apache ZooKeeper是一个集群(节点组)使用的服务,用于在它们之间进行协调,并使用强大的同步技术维护共享数据. Nimbus是无状态的,因此它依赖于ZooKeeper来监视工作节点状态. ZooKeeper帮助管理员与nimbus进行交互.它负责维护灵气和主管的状态. |
风暴本质上是无国籍的.即使无状态本质有其自身的缺点,它实际上有助于Storm以最佳和最快的方式处理实时数据.
风暴不完全无国籍虽然.它将其状态存储在Apache ZooKeeper中.由于该状态在Apache ZooKeeper中可用,因此可以重新启动失败的nimbus并使其在离开的位置工作.通常, monit 等服务监控工具将监控Nimbus并在发生故障时重新启动它.
Apache Storm还有一个名为 Trident拓扑的高级拓扑使用状态维护,它还提供像Pig这样的高级API.我们将在接下来的章节中讨论所有这些功能.