- storm本地運行和集群運行是存在區別的:
- 本地可以讀取本地文件系統及java項目中的文件,但是提交集群后就不能讀取了,storm只是將topology提交到了集群,所以只能在main方法中將需要讀取的配置在提交topology之前讀出來,然后再解析,而不是在spout和bolt中讀取配置文件;
- 同理,外部jar包也不會提交到集群,會有ClassNotFound異常,解決辦法是將依賴包全部放進集群storm目錄的extlib目錄下。
- 我用的打包方式:export->JAR file -> Export all output folders for checked projects -> next -> next -> generate the manifest file->seal the jar -> finsh。
- 提交:storm jar ****.jar 包明.主類名 然后在ip:8080/index.html頁面查看topology運行情況。
- 在bolt操作hdfs時可重寫父類prepare,將fileSystem定義為成員變量,在prepare中賦值,在execute中調用,速度比在execute中賦值調用快多了。