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. nibums启动之后,接受客户端提交任务

命令格式:storm jar xxx.jar xxx驱动类 参数

Running: /export/servers/jdk/bin/java -client -Dstorm.jar=/export/servers/storm/examples/storm-starter/storm-starter-topologies-0.9..jar storm.starter.WordCountTopology wordcount-

  该命令会执行 storm-starter-topologies-0.9.6.jar 中的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包和配置文件,序列化对象文件。

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

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

ResourceWorkerSlot[hostname=192.168.1.106,memSize=,cpu=,tasks=[, , , , , , , ],jvm=<null>,nodeId=61ce10a7-1e78-4c47-9fb3-c21f43a331ba,port=]

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

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

6. worker启动之后,连接zk,拉取任务

ResourceWorkerSlot[hostname=192.168.1.106,memSize=,cpu=,tasks=[, , , , , , , ],jvm=<null>,nodeId=61ce10a7-1e78-4c47-9fb3-c21f43a331ba,port=]

假设任务信息:
1--->spout---type:spout
2--->bolt ---type:bolt
3--->acker---type:bolt

得到对象有几种方式? new ClassName 创建对象、class.forName 反射对象、clone 克隆对象、序列化反序列化
worker通过反序列化,得到程序员自己定义的spout和bolt对象。

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

Storm启动流程分析的更多相关文章

  1. storm启动流程

    email:chenguibin2004@126.com storm: 是一个分布式的实时流式计算框架,具有低延迟.高可用.分布式.可扩展.数据不丢失的特点, storm包含四个核心组件: Nimbu ...

  2. Storm集群启动流程分析

    Storm集群启动流程分析 程序员 1.客户端运行storm nimbus时,会调用storm的python脚本,该脚本中为每个命令编写了一个方法,每个方法都可以生成一条相应的Java命令. 命令格式 ...

  3. Storm启动流程简介

    storm启动流程          storm是一个流行的开源的,分布式实时处理框架,关于storm的基本介绍可以参加这篇官方文档.大致的拓扑结构如图所示:        其中Nimbus是一个后台 ...

  4. u-boot启动流程分析(2)_板级(board)部分

    转自:http://www.wowotech.net/u-boot/boot_flow_2.html 目录: 1. 前言 2. Generic Board 3. _main 4. global dat ...

  5. u-boot启动流程分析(1)_平台相关部分

    转自:http://www.wowotech.net/u-boot/boot_flow_1.html 1. 前言 本文将结合u-boot的“board—>machine—>arch—> ...

  6. Cocos2d-x3.3RC0的Android编译Activity启动流程分析

    本文将从引擎源代码Jni分析Cocos2d-x3.3RC0的Android Activity的启动流程,以下是具体分析. 1.引擎源代码Jni.部分Java层和C++层代码分析 watermark/2 ...

  7. Netty 拆包粘包和服务启动流程分析

    Netty 拆包粘包和服务启动流程分析 通过本章学习,笔者希望你能掌握EventLoopGroup的工作流程,ServerBootstrap的启动流程,ChannelPipeline是如何操作管理Ch ...

  8. Uboot启动流程分析(转载)

    最近一段时间一直在做uboot移植相关的工作,需要将uboot-2016-7移植到单位设计的ARMv7的处理器上.正好元旦放假三天闲来无事,有段完整的时间来整理下最近的工作成果.之前在学习uboot时 ...

  9. 【转】Netty 拆包粘包和服务启动流程分析

    原文:https://www.cnblogs.com/itdragon/archive/2018/01/29/8365694.html Netty 拆包粘包和服务启动流程分析 通过本章学习,笔者希望你 ...

随机推荐

  1. bioperl 自动化下载genbank 中的序列

    当我们想要从genbank 中下载序列的时候,总需要点击右上角的download 按钮,选择对应的格式,然后通过浏览器进行下载,这样反复的点击很费时间了 其实可以通过bioperl 自动化的完成下载: ...

  2. DWZ主从表界面唯一性验证(后台验证)(三)

    之前的博客介绍了前台自写js来验证主动表的唯一性,除了前台的验证,我也学习了后台的一些判断. 再次介绍一下背景需求: 利用DWZ的主从表结构批量添加课程信息,在提交表单后,触发Action事件 1.是 ...

  3. webdriver 日期控件的处理

    http://www.cnblogs.com/liu-ke/p/4200736.html http://blog.csdn.net/wanglha/article/details/44620627 h ...

  4. windows下nvm安装node之后npm命令找不到问题解决办法

    主要关键解解决办法:===>>适用于所有东西的安装 安装有关环境配置类的软件及其他,一般情况下切记不要安装到c盘programfiles下,否则会出现各种问题的报错!!!切记! nvm安装 ...

  5. ubuntu 12.04 右上角的网络连接图标突然消失不见

    某天Ubuntu右上角的网络连接图标突然消失不见了,右击panel -> add to panel -> Notification Area 也不管用,最关键的是上不了网了.可以在Netw ...

  6. 研究jenkins集成unittest成图

    jenkins搭建完毕,unittest代码编写完毕,触发unittest执行测试的脚本和任务编写完毕,接下来研究生成的结果在页面的可视化. 方案: highcharts 参考资料: http://b ...

  7. ITIL也玩“太极拳”

    近期看到一篇老外写的发布管理的培训材料,其中把发布管理比喻成中国太极图中的“阴”,把变 更管理比喻成“阳”,觉得还挺有意思.之所以这么比喻是因为,他认为“发布”是被动的,接受的,有女性阴柔的一面:而“ ...

  8. GCD (Grand Central Dispatch) 笔记

    GCD (Grand Central Dispatch) 是Apple公司开发的一种技术,它旨在优化多核环境中的并发操作并取代传统多线程的编程模式. 在Mac OS X 10.6和IOS 4.0之后开 ...

  9. SPOJ QTREE5 lct

    题目链接 对于每一个节点,记录这个节点所在链的信息: ls:(链的上端点)距离链内部近期的白点距离 rs:(链的下端点)距离链内部近期的白点距离 注意以上都是实边 虚边的信息用一个set维护. set ...

  10. IIS------项目配置到IIS后报500错误

    转载: http://blog.csdn.net/yinjingjing198808/article/details/7185453 错误一: HTTP Error 500.19 - Internal ...