Apache Storm 简明教程

Apache Storm - Workflow

一个正常工作的 Storm 群集应有一个 nimbus 和一个或多个管理员。另一个重要的节点是 Apache ZooKeeper,它将用于在 nimbus 和管理员之间进行协调。

现在让我们仔细了解 Apache Storm 的工作流程 −

  1. 最初,nimbus 将等待向其提交“Storm 拓扑”。

  2. 在提交拓扑后,它将处理该拓扑并收集要执行的所有任务以及要执行任务的顺序。

  3. 然后,nimbus 将任务均匀分配给所有可用的管理员。

  4. 在特定时间间隔内,所有管理员将向 nimbus 发送心跳以通知其它们仍然处于活动状态。

  5. 当一个管理者死亡且不会向 nimbus 发送心跳时,nimbus 会将任务分配给另一个管理者。

  6. 当 nimbus 本身死亡时,supervisor 将处理已分配的任务,并且没有任何问题。

  7. 一旦所有任务完成,supervisor 将等待一个新任务的到来。

  8. 与此同时,服务监控工具会自动重启已死的 nimbus。

  9. 重启的 nimbus 将从它停止的地方继续。类似地,已死的 supervisor 也可以自动重新启动。由于 nimbus 和 supervisor 都可以自动重新启动,并且都将像以前一样继续,因此 Storm 保证至少处理所有任务一次。

  10. 一旦所有拓扑都处理完毕,nimbus 将等待一个新拓扑到来,类似地,supervisor 将等待新任务。

默认情况下,Storm 集群有两种模式 −

  1. Local mode − 此模式用于开发、测试和调试,因为它是最简单的方法,可以查看所有拓扑组件协同工作。在此模式下,我们可以调整允许我们查看我们的拓扑如何在不同 Storm 配置环境中运行的参数。在本地模式下,storm 拓扑在单个 JVM 中的本地计算机上运行。

  2. Production mode − 在此模式下,我们将拓扑提交到正在工作的 storm 集群,该集群由许多进程组成,通常在不同的计算机上运行。正如在 storm 的工作流中讨论的那样,正在进行集群会无限期地运行,直至关闭。