- Apache Storm 教程
- Apache Storm - 主页
- Apache Storm - 简介
- Apache Storm - 核心概念
- Apache Storm - 集群架构
- Apache Storm - 工作流程
- Storm - 分布式消息系统
- Apache Storm - 安装
- Apache Storm - 工作示例
- Apache Storm - 三叉戟
- 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 拓扑。Nimbus 分析拓扑并收集要执行的任务。然后,它将任务分配给可用的主管。
主管将有一个或多个工作进程。Supervisor 将任务委托给工作进程。工作进程将根据需要生成尽可能多的执行程序并运行任务。Apache Storm 使用内部分布式消息系统来进行 nimbus 和 Supervisor 之间的通信。
成分 | 描述 |
---|---|
雨云 | Nimbus是Storm集群的主节点。集群中的所有其他节点称为工作节点。主节点负责在所有工作节点之间分发数据、向工作节点分配任务并监控故障。 |
导师 | 遵循 nimbus 给出的指令的节点称为主管。一个supervisor有多个worker进程,它管理worker进程来完成nimbus分配的任务。 |
工人进程 | 工作进程将执行与特定拓扑相关的任务。工作进程不会自行运行任务,而是创建执行程序并要求它们执行特定任务。一个工作进程将有多个执行者。 |
执行者 | 执行器只不过是工作进程产生的单个线程。执行器运行一项或多项任务,但仅针对特定的 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 的高级拓扑,具有状态维护功能,并且还提供了像 Pig 这样的高级 API。我们将在接下来的章节中讨论所有这些功能。