Storm 工作流程
一个工作中的 Storm 集群应该有一个 Nimbus 和一个或多个 supervisors。
Apache ZooKeeper 是一个重要的节点 ,用于协调 nimbus 和 supervisors 。
1. Apache Storm 工作流程
- 最初,nimbus 将等待 Storm 拓扑提交给它。
- 一旦提交拓扑,它将处理拓扑并收集要执行的所有任务和任务将被执行的顺序。
- 然后,nimbus 将任务均匀分配给所有可用的 supervisors。
- 在特定的时间间隔,所有 supervisor 将向 nimbus 发送心跳以通知它们仍然运行着。
- 当 supervisor 终止并且不向心跳发送心跳时,则 nimbus 将任务分配给另一个 supervisor。
- 当 nimbus 本身终止时,supervisor 将在没有任何问题的情况下对已经分配的任务进行工作。
- 一旦所有的任务都完成后,supervisor 将等待新的任务进去。
- 同时,终止 nimbus 将由服务监控工具自动重新启动。
- 重新启动的网络将从停止的地方继续。同样,终止 supervisor 也可以自动重新启动。由于网络管理程序和 supervisor 都可以自动重新启动,并且两者将像以前一样继续,因此 Storm 保证至少处理所有任务一次。
- 一旦处理了所有拓扑,则网络管理器等待新的拓扑到达,并且类似地,管理器等待新的任务。
2. Storm集群两种模式
默认情况下,Storm 集群有两种模式。
- 本地模式
此模式用于开发,测试和调试,因为它是查看所有拓扑组件协同工作的最简单方法。在这种模式下,我们可以调整参数,使我们能够看到我们的拓扑如何在不同的 Storm 配置环境中运行。在本地模式下,Storm 拓扑在本地机器上在单个 JVM 中运行。
- 生产模式
在这种模式下,我们将拓扑提交到工作 Storm 集群,该集群由许多进程组成,通常运行在不同的机器上。如在 Storm 的工作流中所讨论的,工作集群将无限地运行,直到它被关闭。
Apache Storm 处理实时数据,并且输入通常来自消息排队系统。外部分布式消息系统将提供实时计算所需的输入。Spout 将从消息系统读取数据,并将其转换为元组并输入到 Apache Storm 中。Apac ...