記一次storm提交任務遇到的坑
阿新 • • 發佈:2018-12-09
摘要:主要是自己沒有真正理解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.主函式名 隨便再輸入一個引數(我這兒的配置檔案等,不是從控制檯獲取,隨便輸入沒有任何實際意義)
就可以使用上面的方法了。