storm操作语句.docx

1、启动Nimbus后台程序

storm主控节点上运行,nimbus进程。

[hadoop@datanode1 storm]$ storm nimbus >/dev/null 2>&1 &  # nimbus进程。

2、启动supervisor后台程序

storm各个工作节点上运行,supervisor进程。

[hadoop@datanode1 storm]$ bin/storm supervisor >/dev/null 2>&1 & #supervisor进程

3、启动UI后台程序

storm主控节点上运行,core进程。

[hadoop@datanode1 storm]$ storm ui > /dev/null 2>&1 &  #core进程

启动后通过http://{nimbus host}:8080观察集群的worker资源使用情况、Topologies的运行状态等信息。

Storm  UI只提供对topology的监控和统计。Storm不处理计算结果的保存。

4、启动logviewer后台程序(作用为何?)

storm主节点上运行,

4、查看所有storm进程

1)、主节点

2)、从节点

注意事项:

1)、Storm后台进程被启动后,将在Storm安装部署目录下的logs/子目录下生成各个进程的日志文件。

2)、经测试,Storm UI必须和Storm Nimbus部署在同一台机器上,否则UI无法正常工作,因为UI进程会检查本机是否存在Nimbus链接。

3)、为了方便使用,可以将bin/storm加入到系统环境变量中。

至此,Storm集群已经部署、配置完毕,可以向集群提交拓扑运行了。

5、向集群提交任务

1)、启动Storm Topology

storm jar allmycode.jar org.me.MyTopology arg1   arg2 arg3

 

其中,allmycode.jar是包含Topology实现代码的jar包,org.me.MyTopologymain方法是Topology的入口,arg1arg2arg3org.me.MyTopology执行时需要传入的参数。

2)、停止Storm Topology

storm kill {toponame}

 

其中,{toponame}Topology提交到Storm集群时指定的Topology任务名称。

6、提交测试storm 程序

我们将topology打成jar包后,利用bin/storm这个python脚本,执行以下命令:

bin/storm jar ***.jar com.taobao.MyTopology args

 

jar包提交给storm集群。Storm脚本会启动JVM执行Topologymain方法,执行submitTopology的过程。而submitTopology会将jar文件上传到nimbus,上传是通过socket传输.storm这个Python脚本的jar方法里可看到:

def jar(jarfile, klass, *args):                                                                                                                               
     exec_storm_class(                                                                                                                                          
          klass,                                                                                                                                                
          jvmtype=
"-client",                                                                                                                                    
          extrajars=[jarfile, CONF_DIR, STORM_DIR + 
"/bin"],                                                                                                    
          args=args,                                                                                                                                            
          prefix=
"export STORM_JAR=" + jarfile + ";") 

 jar文件的地址设置为环境变量STORM_JAR,这个环境变量在执行submitTopology的时候用到:

//StormSubmitter.java 
 
private static void submitJar(Map conf) {
          
if(submittedJar==null) {
              LOG.info("Jar not uploaded to master yet. Submitting jar ");
              String localJar = System.getenv("STORM_JAR");
              submittedJar = submitJar(conf, localJar);
          } 
else {
              LOG.info("Jar already uploaded to master. Not submitting jar.");
          }
      }

 

 通过环境变量找到jar包的地址,然后上传。利用环境变量传参是个小技巧。

其次,nimbus在接收到jar文件后,存放到数据目录的inbox目录,nimbus数据目录的结构

-nimbus
       -inbox
           -stormjar-57f1d694-2865-4b3b-8a7c-99104fc0aea3.jar
           -stormjar-76b4e316-b430-4215-9e26-4f33ba4ee520.jar
 
       -stormdist
          -storm-id
             -stormjar.jar
             -stormconf.ser
             -stormcode.ser

更多关于topology提交的源码解析,参看:http://www.blogjava.net/killme2008/archive/2011/11/17/364112.html

 [hadoop@master storm]$ bin/storm jar examples/storm-starter/storm-starter-topologies-0.9.3.jar   storm.starter.ExclamationTopology ExclamationTopology

7、结束storm程序

[hadoop@master storm]$ storm kill   ExclamationTopology

 


你可能感兴趣的:(storm操作语句.docx)