- Apache Storm 教程
- Apache Storm - 首页
- Apache Storm - 简介
- Apache Storm - 核心概念
- Apache Storm - 集群架构
- Apache Storm - 工作流程
- Storm - 分布式消息系统
- Apache Storm - 安装
- Apache Storm - 实践案例
- Apache Storm - Trident
- Twitter 中的 Apache Storm
- 雅虎财经中的 Apache Storm
- Apache Storm - 应用
- Apache Storm 有用资源
- Apache Storm - 快速指南
- Apache Storm - 有用资源
- Apache Storm - 讨论
Apache Storm - 集群架构
Apache Storm 的主要亮点之一是它是一个容错的、快速的、没有“单点故障”(SPOF)的分布式应用程序。我们可以根据需要在尽可能多的系统中安装 Apache Storm 以提高应用程序的容量。
让我们看看 Apache Storm 集群的设计及其内部架构。下图描述了集群设计。
Apache Storm 有两种类型的节点,**Nimbus**(主节点)和**Supervisor**(工作节点)。Nimbus 是 Apache Storm 的核心组件。Nimbus 的主要工作是运行 Storm topology。Nimbus 分析 topology 并收集要执行的任务。然后,它将任务分配给可用的 Supervisor。
一个 Supervisor 将拥有一个或多个工作进程。Supervisor 将任务委托给工作进程。工作进程将根据需要生成多个执行器并运行任务。Apache Storm 使用内部分布式消息系统进行 Nimbus 和 Supervisor 之间的通信。
组件 | 描述 |
---|---|
Nimbus | Nimbus 是 Storm 集群的主节点。集群中的所有其他节点都称为**工作节点**。主节点负责在所有工作节点之间分配数据,将任务分配给工作节点并监控故障。 |
Supervisor | 遵循 Nimbus 指令的节点称为 Supervisor。**Supervisor** 拥有多个工作进程,它管理工作进程以完成 Nimbus 分配的任务。 |
工作进程 | 工作进程将执行与特定 topology 相关的任务。工作进程本身不会运行任务,而是创建**执行器**并要求它们执行特定任务。一个工作进程将拥有多个执行器。 |
执行器 | 执行器只不过是工作进程生成的单个线程。执行器运行一个或多个任务,但仅限于特定的 spout 或 bolt。 |
任务 | 任务执行实际的数据处理。因此,它要么是 spout,要么是 bolt。 |
ZooKeeper 框架 | Apache ZooKeeper 是一种由集群(节点组)使用的服务,用于协调它们之间并使用强大的同步技术维护共享数据。Nimbus 是无状态的,因此它依赖于 ZooKeeper 来监控工作节点状态。 ZooKeeper 帮助 Supervisor 与 Nimbus 交互。它负责维护 Nimbus 和 Supervisor 的状态。 |
Storm 本质上是无状态的。尽管无状态有其自身的缺点,但它实际上帮助 Storm 以最佳和最快的方式处理实时数据。
不过,Storm 并非完全无状态。它将其状态存储在 Apache ZooKeeper 中。由于状态存在于 Apache ZooKeeper 中,因此可以重新启动失败的 Nimbus,并使其从中断的地方继续工作。通常,服务监控工具(如**monit**)将监控 Nimbus,并在发生任何故障时重新启动它。
Apache Storm 还具有一个名为**Trident Topology**的高级 topology,它具有状态维护功能,并且还提供类似于 Pig 的高级 API。我们将在接下来的章节中讨论所有这些功能。