简述
一个正常工作的 Storm 集群应该有一个 nimbus 和一个或多个监督者。另一个重要的节点是 Apache ZooKeeper,它将用于 nimbus 和 supervisor 之间的协调。
现在让我们仔细看看 Apache Storm 的工作流程 -
-
最初,nimbus 将等待“storm topology”提交给它。
-
提交topology后,它将处理topology并收集所有要执行的任务以及任务执行的顺序。
-
然后,nimbus 会将任务平均分配给所有可用的supervisor。
-
在特定的时间间隔内,所有的监督者都会向 nimbus 发送心跳,以告知他们还活着。
-
当supervisor死亡并且没有向 nimbus 发送心跳时,nimbus 会将任务分配给另一个supervisor。
-
当 nimbus 本身死亡时,supervisor将毫无问题地处理已经分配的任务。
-
完成所有任务后,supervisor将等待新任务进来。
-
同时,死亡的 nimbus 会被服务监控工具自动重启。
-
重新启动的 nimbus 将从停止的地方继续。同样,死掉的supervisor也可以自动重启。由于 nimbus 和 supervisor 都可以自动重启,并且都会像以前一样继续,所以 Storm 保证至少处理一次所有任务。
-
一旦处理完所有topology,nimbus 就会等待新的topology到达,类似地,监督者会等待新的任务。
默认情况下,Storm 集群中有两种模式 -
-
Local mode− 此模式用于开发、测试和调试,因为它是查看所有topology组件协同工作的最简单方法。在这种模式下,我们可以调整参数,使我们能够看到我们的topology在不同的 Storm 配置环境中是如何运行的。在本地模式下,storm topology在单个 JVM 中的本地机器上运行。
-
Production mode− 在这种模式下,我们将topology提交给正在工作的storm集群,该集群由许多进程组成,通常运行在不同的机器上。正如在storm的工作流程中所讨论的,一个工作集群将无限期地运行,直到它被关闭。