JStorm源码分析(四)Storm集群启动过程

JStorm源码分析(四):Storm集群启动过程

JStorm源码分析文件

对于整个JStorm源码分析系列,我将JStorm源码分析的文件放在我的GitHub上JStorm源码剖析,欢迎大家fork和star

1.Nimbus的启动过程
(1)Nimbus 的启动脚本命令:bin/storm nimbus 实际调用过程:

storm脚本中的main方法—->调用 def nimbus—->exec_storm_class 在exec_storm_class中,最终调用java命令,即:
java -server backtype.storm.daemon.nimbus—–>执行NimbusServer的main方法。

(2)NimbusServer的main方法源码如下:

这里写图片描述

(3)在NimbusServer的main方法中,调用launchServer()启动nimbus

这里写图片描述

这里写图片描述

(4)launchServer中的init()方法

这里写图片描述

(5)initTopologyStatus ()方法源码如下:

这里写图片描述

至此,nimbus的启动过程完成!

2.Supervisor的启动过程
(1)Supervisor 的启动脚本命令:bin/storm supervisor

实际调用过程:
storm脚本中的main方法—->调用 def supervisor —->exec_storm_class

在exec_storm_class中,最终调用java命令,即:
java -server backtype.storm.daemon.supervisor—–>执行Supervisor的main方法。

这里写图片描述

这里写图片描述

(2)Supervisor的main方法中,创建Supervisor的实例,并调用其run()方法。

这里写图片描述

(3)在run()方法中调用mkSupervisor(conf,null)方法启动Supervisor。

清理Supervisor本地临时目录 

获取Zookeeper的客户端操作实例对象  

创建LocalStat的key-value本地数据库 

使用UUID生成一个Supervisor的id,并放入到LocalStat的key-value本地数据库中 

​ 移除LocalStat中的”lcoal-zk-assignment-version”和”local-zk-assignments”信息

​ 创建Supervisor的心跳对象,设置Supervisor的心跳时间

​ supervisor.heartbeat.frequency.secs,并将Supervisor的信息写入Zookeeper中

​ 将心跳同步到Nimbus和Apsara容器

​ 创建和启动Supervisor的同步线程,每隔supervisor.monitor.frequency.secs秒,运行一次 Supervisor的同步线程

​ 检查Supervisor是否运行正常

​ 最 后 , 返 回 一 个 S u p e r v i s o r Ma n g e r , S u p e r v i s o r Ma n g e r 能 够 停 止 所 有 的 S u p e r v i s o r 和 W o r k e r

源码如下:

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

至此,Supervisor的启动过程完成!

相关系列文章

JStorm源码分析(一)Storm执行脚本

JStorm源码分析(二)Storm任务提交流程

JStorm源码分析(三)Nimbus的任务分配过程

JStorm源码分析(五)Supervisor获取任务

JStorm源码分析(六)Supervisor启动Worker的过程

JStorm源码分析(七)Excutor启动和创建

微信公众号

有兴趣的同学可以关注小编哟!
这里写图片描述

猜你喜欢

转载自blog.csdn.net/oeljeklaus/article/details/80992523