4.2.3 Storm工作机制

更新于 2026年10月10日 版权声明
4.2.3 Storm工作机制

1)Storm工作流程

如图4⁃3所示,Storm集群由一个主节点和多个工作节点组成。主节点运行了一个名为“Nimbus”的守护进程,用于分配代码、布置任务及故障检测。每个工作节点都运行了一个名为“Supervisor”的守护进程,用于监听工作,开始并终止工作进程。两者的协调工作是由Zookeeper来完成的。Storm的工作流程如下:

第一步 客户端提交拓扑到Nimbus。

第二步 Nimbus针对该拓扑建立的目录和配置计算Task并分配Task,在Zookeeper上建立Task和Worker的对应关系。

第三步 在Zookeeper上创建Taskbeats节点来监控Task的心跳,启动Topology。

第四步 Supervisor去Zookeeper上获取分配的Tasks,启动多个Worker进程,每个Worker生成Task,一个Task一个线程,根据Topology信息初始化建立Task之间的连接。

第五步 整个拓扑运行起来。

最初,Nimbus等待“Storm拓扑”提交给它。一旦提交拓扑,Nimbus将处理拓扑并收集要执行的所有任务和任务将被执行的顺序。然后,Nimbus将任务均匀分配给所有可用的Supervisor。在特定的时间间隔,所有Supervisor将发送心跳信息给Zookeeper以告知它们仍然运行着,一旦分配给某个Supervisor的所有任务都完成后,它将等待新的任务。当某Supervisor终止并且不再发送心跳时,则Nimbus将任务分配给另外的Supervisor。当Nimbus本身终止时,Supervisor将在没有任何问题的情况下对已经分配的任务进行工作。终止的Nimbus将由服务监控工具自动重新启动,重新启动的网络将从停止的地方继续,同样,终止的Supervisor也可以自动重新启动。由于网络管理程序和Supervisor都可以自动重新启动,并且两者将像以前一样继续,因此Storm保证至少处理所有任务一次。一旦处理了所有拓扑,网络管理器将等待新的拓扑的到达。

2)Topology提交流程

如果说Spout和Bolt是Storm流计算的血肉,那么Topology就是Storm流计算的骨架,它将所有的Spout和Bolt组织在一起,构成了一套实时流处理架构。

Topology的运行有两种模式,即Storm运行有两种模式:本地模式和集群模式。

本地模式:主要用于开发测试应用程序,可以通过LocalCluster创建一个集群,代码如图4⁃5所示。

图示(https://www.daowen.com)

图4⁃5 创建本地模式提交任务

集群模式:在生产线上使用,可以定义一个Topology,然后使用StormSubmitter来提交任务,代码如图4⁃6所示。

图示

图4⁃6 StormSubmitter提交任务

Topology的提交流程如图4⁃7所示。

图示

图4⁃7 Topology提交流程

3)Storm数据交互

图4⁃8是Storm的数据交互图,Nimbus和Supervisor之间没有直接交互,状态都是保存在Zookeeper上,通过Zookeeper实现交互。Worker之间通过ZeroMQ传送数据。

图示

图4⁃8 Storm数据交互

↑上一章 ↓下一章
关注公众号获取验证码
复制内容需要验证码(7.99元/天)