一个正在运行的Storm Cluster应该有一个Nimbus和一个或多个Supervisor 另一个重要的节点是Apache ZooKeeper,它将用于NimbusSupervisor之间的协调。

 

现在让我们仔细看看Apache Storm的工作流程:

  •  最开始,Nimbus将等待“Strom Topology”提交给它。

  • 一旦Topology被提交后,Nimbus就处理Topology并收集要执行的所有任务以及任务间的顺序关系。

  • 然后,Nimbus将任务平均分配给所有可用的Supervisor

  • 每隔一定的时间间隔,所有的Supervisor都会将心跳heartbeat)发送给Nimbus来表明他们还在运转。

  • 当某一个Supervisor宕机并且不向Nimbus发送心跳时,Nimbus就把任务分配给另一个Supervisor

  • Nimbus本身down掉时,Supervisor会继续处理已经分配给它的任务并不会出现任何问题。

  • 如果所有任务都完成了,Supervisor就会等待新的任务进入。

  • 同时,down掉的Nimbus会被服务监控工具自动重启。

  • 重新启动的Nimbus将从停止的地方继续工作。 同样,down掉的Supervisor也可以自动重新启动。 由于NimbusSupervisor都可以自动重启,并会像以前一样继续运行,所以Storm能保证对所有任务至少处理一次。

  •  一旦处理完所有TopologyNimbus就会等待新的Topology提交请求,同样,Supervisor也在等待新的任务。

 

默认情况下,Storm Cluster有两种模式:

  • 本地模式此模式用于开发,测试和调试,因为它是查看所有Topology组件一起工作的最简单方法。 在这种模式下,我们可以调整参数,使我们能够看到我们的Topology如何在不同的Storm配置环境中运行。 在本地模式下,Storm Topology在本地计算机上的单个JVM里运行。

  • 生产模式在这种模式下,我们将Topology提交给正在运行的Storm Cluster,该Cluster由多个进程组成,通常运行在不同的机器上。 正如Storm工作流程中所讨论的,一个正常运行的Cluster将无限期地运行,直到它被关闭。



关注微信服务号,手机看文章
关注微信服务号,手机看文章