Strom集群启动流程以及任务提交分析三

Storm 启动流程分析

1:client 端分析

客户端运行 storm nimbus 时,会调用storm 的 python 脚本,该脚本中为每个命令编写一个方法,每个方法都可以生成一条相应的 java 命令。

命令格式如下:java-server xxxx.ClassName- args

 nimbus---> Running: /export/servers/jdk/bin/java -server  backtype.storm.daemon.nimbus

supervisor---> Running: /export/servers/jdk/bin/java -server  backtype.storm.daemon.supervisor

2:nimbus 端分析

2.1 nimbus 启动之后,接受客户端提交任务 Running: /export/servers/jdk/bin/java -client -Dstorm.jar=/export/servers/storm/examples/storm-starter/storm-starter-topologies-0.9.6.jar storm.starter.WordCountTopology wordcount-28

该命令会执行 storm-starter-topologies-0.9.6.jar 中的 main 方法,main方法会执行以下代码

StormSubmitter.submitTopology("mywordcount",config,topologyBuilder.createTopology());

topologyBuilder.createTopology(),会将程序员编写的spout对象和bolt对象进行序列化。将用户的jar上传到nimbus物理节点的 /export/data/storm/workdir/nimbus/inbox目录下。并且改名,改名的规则是添加一个 UUID 字符串。在 nimbus 物理节点的 /export/data/storm/workdir/nimbus/stormdist 目录下。有当前正在运行的topology的jar包和配置文件,序列化对象文件。

2.2 nimbus 接受到任务之后,会将任务进行分配,分配会产生一个 assignment 对象,该对象保存在 zk 中,目录是/storm/assignments,该目录值保存正在运行的 topology 任务。

3:supervisor 端分析

3.1 supervisor 通过 zk watch机制,感知nimbus在zk任务分配信息,从zk中拉去任务信息,分辨出属于自己的任务。 ResourceWorkerSlot[hostname=192.168.1.106,memSize=0,cpu=0,tasks=[1, 2, 3, 4, 5, 6, 7, 8],jvm=<null>,nodeId=61ce10a7-1e78-4c47-9fb3-c21f43a331ba,port=6900]​​​​​​​

3.2 supervisor 根据自己的任务信息,启动奇迹的worker,并分配一个端口。

'/export/servers/jdk/bin/java' '-server' '-Xmx768m' export/data/storm/workdir/supervisor/stormdist/wordcount1-3-1461683066/stormjar.jar' 'backtype.storm.daemon.worker' 'wordcount1-3-1461683066' 'a69bb8fc-e08e-4d55-b51f-e539b066f90b' '6701' '9fac2805-7d2b-4e40-aabc-1c85c9856d64'​​​​​​​

4:worker 端分析

worker启动之后,连接 zk ,拉去任务 ResourceWorkerSlot[hostname=192.168.1.106,memSize=0,cpu=0,tasks=[1, 2, 3, 4, 5, 6, 7, 8],jvm=<null>,nodeId=61ce10a7-1e78-4c47-9fb3-c21f43a331ba,port=6900]​​​​​​​

worker 通过反序列化,得到程序员自己定义的 spout 和 bolt 对象

worker 根据任务类型,分别执行 spout 任务或者 bolt 任务

spout 任务生命周期 是 : open 、nextTuple 、 outPutFiled

bolt的生命周期 : prepare 、execute(tuple) 、outPutFiled

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值