storm操做語句.docx

1、啓動Nimbus後臺程序

storm主控節點上運行,nimbus進程。html

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

2、啓動supervisor後臺程序

storm各個工做節點上運行,supervisor進程。node

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

3、啓動UI後臺程序

storm主控節點上運行,core進程。jvm

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

啓動後經過http://{nimbus host}:8080觀察集羣的worker資源使用狀況、Topologies的運行狀態等信息。oop

Storm  UI只提供對topology的監控和統計。Storm不處理計算結果的保存。測試

4、啓動logviewer後臺程序(做用爲什麼?)

storm主節點上運行,ui

4、查看全部storm進程

1)、主節點

2)、從節點

注意事項:

1)、Storm後臺進程被啓動後,將在Storm安裝部署目錄下的logs/子目錄下生成各個進程的日誌文件。spa

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

相關文章
相關標籤/搜索