zoukankan      html  css  js  c++  java
  • Storm集群启动流程分析

    Storm集群启动流程分析

    程序员 


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

    命令格式:java -server xxx.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

    nimbus


    2、nimbus启动之后,接受客户端提交任务

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

    Running:/export/servers/jdk/bin/java  -client  -Dstorm.jar=/export/servers/storm/examples/storm-master/storm-master-topologies-0.9.5.jar  org.apache.storm.starter.WordCountTopology  wordcount-2017-5-20

    该命令会执行storm-starter-topologies-0.9.5.jar中的storm-starter-topologies-0.9.5.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、接收到任务之后,会将任务进行分配,分配会产生一个assignment对象,该对象会保存到Zookeeper中,目录是/storm/assignments,该目录只保存正在运行的topology任务。

     supervisor


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

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

    worker


     6、worker启动之后,连接zookeeper,拉取任务。

      得到对象的几种方式?new className创建对象、class.forName反射对象、clone克隆对象、序列化反序列化对象

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

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

      spout生命周期是:open、nextTuple、declareOutputFields

      bolt生命周期是:prepare、execute(Tuple)、declareOutputFields

  • 相关阅读:
    07.精益敏捷项目管理——敏捷发布计划
    06.精益敏捷项目——迭代0:准备第一次迭代
    05精益敏捷项目管理——超越Scrum
    04精益敏捷项目管理——精益组合管理
    22.敏捷估计与规划——Why Agile Planning Works笔记
    21.敏捷估计与规划——Communicating about Plans笔记
    20.敏捷估计与规划——Monitoring the Iteration plans笔记
    18.规划多小组的项目——Planning the Multiple-Team Project笔记
    17.敏捷估计与规划——Buffering Plans for Uncertainty笔记
    16.敏捷估计与规划——Estimating Velocity笔记
  • 原文地址:https://www.cnblogs.com/ahu-lichang/p/6881506.html
Copyright © 2011-2022 走看看