Storm启动流程

Storm启动流程

**

client->numbus->zk->supervisor->worker->spout,bolt

storm只负责计算,不负责采集和存储数据

----------nimbus(storm程序启动)
1.客户端运行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启动之后:接收客户端提交任务
(1)命令格式:storm jar xxx.jar xxxx驱动类 参数(task名)
Running: /home/hadoop/app/jdk1.7.0_79/bin/java -client -Ddaemon.name= -Dstorm.options= -Dstorm.home=/export/server/storm -Dstorm.log.dir=/export/server/storm/logs -Djava.library.path=/usr/local/lib:/opt/local/lib:/usr/lib -Dstorm.conf.file= -cp xxx.jar:hadoop_stream-1.0-SNAPSHOT.jar
(2)将用户的jar上传到 nimbus物理节点的 /export/data/storm/workdir/nimbus/inbox/目录下
stormjar-cc591210-bc7c-4678-b4e5-03e92edeab86.jar
(3)命令会执行 hadoop_stream-1.0-SNAPSHOT.jar中的main方法,main方法执行一下代码:
StormSubmitter.submitTopology(“mywordcount”,config,topologyBuilder.createTopology());
topologyBuilder.createTopology()会将自定义的spout对象和bolt对象进行序列化
(4)将序列化对象和配置文件放入在/export/data/storm/workdir/nimbus/stormdist 目录下,并将正在运行的topology的jar包也移到该目下.

3.接收到任务之后,会将任务进行分配,分配会产生一个assignment对象,该对象对保存到zk中,目录是/storm/assignment.该目录只保存正在运行的topology任务.

----------------supervisor(获取任务)
4.supervisor通过watch机制,感知到nimbus在zk上的任务分配信息,从zk上拉取任务信息,分辨出属于自己的任务,

5.supervisor 根据自己的任务信息,启动自己的worker,并分配一个端口
/export/data/storm/workdir/supervisor/stormdist 有配置文件

---------------worker(执行任务)
6.worker启动之后,连接zk,拉取任务
得到对象有几种方式? new ClassName 创建对象, class.forName 反射对象, clone 克隆对象, 序列化反序列化
worker通过反序列化,得到定义的spout和bolt对象

7.worker根据任务类型,分别执行spout任务或bolt任务,
spout的生命周期是:open,nextTuple,outPutFiled
bolt的生命周期是:prepare,execute(tuple),outPutFiled

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值