1. 程式人生 > >記一次storm提交任務遇到的坑

記一次storm提交任務遇到的坑

摘要:主要是自己沒有真正理解storm jar命令引數的意義。

 

情景復現:

  在storm叢集中使用命令提交後,在UI介面中,一直看不見任務提交上來的任務,但是在叢集提交的shell介面中,是可以看到相關任務的日誌輸出情況的。

  下面是導致任務提交不上去的程式碼:

    解釋:storm jar xxxxxxx.jar com.主函式名   

       在storm叢集中使用此命令進行提交時,jar包後面是需要輸入主函式的。

if (args.length < 1) {
  LocalCluster cluster
= new LocalCluster();
//在本地執行 cluster.submitTopology(properties.getProperty(TOPOLOGY_NAME, DEFAULT_TOPOLOGY_NAME), config, builder.createTopology());
}
else { StormSubmitter.submitTopology(properties.getProperty(TOPOLOGY_NAME, DEFAULT_TOPOLOGY_NAME), config, builder.createTopology()); }

  此程式碼中的args你可能會和我一樣,理解成是輸入的主函式的路徑,就理解成在提交時輸入了主函式,這兒就不小於1了,就是在叢集上運行了。

  但是,實際的情況是,你在叢集上,提交任務時,後面輸的主函式的路徑,不代表你從控制檯輸入的引數個數。(有點繞,自己多做兩次實驗就可以了)

  如果想要使用上面的方法:正確的姿勢是:storm jar xxxxxxx.jar com.主函式名 隨便再輸入一個引數(我這兒的配置檔案等,不是從控制檯獲取,隨便輸入沒有任何實際意義)

 就可以使用上面的方法了。