Apache Storm 简明教程
Apache Storm - Cluster Architecture
Apache Storm 的主要亮点之一在于它是一种容错的、没有“单点故障”(SPOF) 的快速分布式应用程序。我们可以根据需要在尽可能多的系统中安装 Apache Storm,以增加应用程序的容量。
让我们看看 Apache Storm 集群的设计和内部架构是如何的。下图显示了集群设计。
Apache Storm 有两种类型的节点, Nimbus (主节点)和 Supervisor (工作节点)。Nimbus 是 Apache Storm 的核心组件。Nimbus 的主要工作是运行 Storm 拓扑。Nimbus 分析拓扑并收集要执行的任务。然后,它会将任务分配给可用的 supervisior。
一个 supervisor 将拥有一个或多个工作进程。supervisior 会将任务委托给工作进程。工作进程将根据需要生成尽可能多的执行程序并运行任务。Apache Storm 使用内部分布式消息系统在 nimbus 和 supervisior 之间进行通信。
Components |
Description |
Nimbus |
Nimbus 是 Storm 集群的主节点。群集中的所有其他节点都被称为 worker nodes 。主节点负责在所有工作节点之间分配数据、向工作节点分配任务和监控故障。 |
Supervisor |
遵循 nimbus 给出的指令的节点称为 Supervisior。一个 supervisor 具有多个工作进程,它控制工作进程,以完成 nimbus 分配的任务。 |
Worker process |
一个工作进程将执行与特定拓扑相关的任务。一个工作进程本身不会运行任务,而是创建 executors ,并要求它们执行特定任务。一个工作进程将具有多个执行程序。 |
Executor |
一个执行程序只不过是由一个工作进程产生的单个线程。一个执行程序运行一个或多个任务,但只针对一个特定的 spout 或 bolt。 |
Task |
一个任务执行实际的数据处理。因此,它要么是一个 spout,要么是一个 bolt。 |
ZooKeeper framework |
Apache ZooKeeper 是一个由一个群集(一组节点)用来协调它们自己并使用强大的同步技术维护共享数据的一项服务。Nimbus 是无状态的,因此它依赖 ZooKeeper 来监控工作节点的状态。ZooKeeper 帮助 supervisior 与 nimbus 进行交互。它负责维护 nimbus 和 supervisior 的状态。 |
Storm 本质上是无状态的。即使无状态的本质有其自身的缺点,但它实际上帮助 Storm 以尽可能最佳、最快速的方式处理实时数据。
不过,Storm 并不完全是无状态的。它将自己的状态存储在 Apache ZooKeeper 中。由于状态在 Apache ZooKeeper 中可用,因此一个失败的 nimbus 可以重新启动并从它停止的位置继续工作。通常,类似于 monit 的服务监控工具将监控 Nimbus,并在出现任何故障时重新启动它。
Apache Storm 还具有一种称为 Trident Topology 的高级拓扑,具有状态维护,并且还提供类似于 Pig 的高级别 API。我们将在接下来的章节讨论所有这些功能。