Storm 集群结构
Apache Storm 的主要亮点是它容错、快速、没有单点故障。
我们可以根据需要在尽可能多的系统中安装Apache Storm,以增加应用程序的容量。
我们来看看Apache Storm群集的设计方式和内部架构。
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 | 任务执行实际数据处理。所以,它是一个Spouts或一个螺栓。 |
ZooKeeper framework |
Apache ZooKeeper是一个集群(节点组)使用的服务,用于在它们之间进行协调,并使用强大的同步技术维护共享数据。Nimbus是无状态的,因此它依赖于ZooKeeper来监视工作节点状态。ZooKeeper帮助主管与灵气接触。它负责维护灵气和主管的状态。 |
Storm本质上是无边界的。尽管无状态自然有它自己的缺点,但它实际上有助于Storm以最佳和最快的方式处理实时数据。
尽管 Storm 并非完全无边界。它将其状态存储在Apache ZooKeeper中。由于状态在 Apache ZooKeeper 中可用,因此可以重新启动失败的 nimbus 并使其从离开的地方开始工作。通常,像 monit 这样的服务监视工具将监视 Nimbus 并在出现故障时重新启动它。
Apache Storm还具有称为 Trident拓扑 的高级拓扑,并具有状态维护功能,并且还提供了像Pig这样的高级API。
一个工作中的 Storm 集群应该有一个 Nimbus 和一个或多个 supervisors。Apache ZooKeeper 是一个重要的节点 ,用于协调 nimbus 和 supervisors 。1. ...