storm日志bebug问题
2019獨角獸企業重金招聘Python工程師標準>>>
如何使用自定義配置文件?
開發storm應用時可能需要用到自身的配置文件。storm.yaml只能提供給storm自身的配置系統使用。針對后臺最廣泛使用的ini配置文件,推薦使用ini4j。它是一個輕量的ini配置文件讀取器、具有簡單易懂的api。
請在spout和bolt的prepare方法中讀取配置文件。任何資源類的初始化都需要放到prepare方法中(比如數據庫連接,和讀取文件索引類等)。
程序部署中的注意事項
I?打包storm程序請不要把依賴打進去,依賴需要單獨部署;
II?你需要一種有效的機制將程序的依賴包分發到所有的storm節點上(可上傳到nimbus,通過rsync做目錄同步);
III?你需要分發的依賴包集合=你的程序所有的依賴包集合????storm依賴包與你的依賴包的交集(否則topology會初始化失敗)
IV?在所有supervisor節點上自定義配置文件的內容和路徑需要完全一致,路徑不一致topology會初始化失敗,內容不一致,程序的行為則是未定義的;
如何使用日志系統?如何debug?
在經過一番辛勤勞動之后,你的程序編譯成功了。但是,這不代表著它會按照你設定的行為去運行。如何debug成為了一個問題。
最基本也是最原始的思路就是log。在所有你認為可能出錯的地方log(尤其是在prepare方法中,這里通常做的是資源類的初始化,如果它們初始化失敗,topology則會初始化失敗,這樣能幫助你快速定位到錯誤原因)。
Storm默認與log4j集成。你可以再$STORM_HOME/log4j/目錄下找log4j的配置文件。通過調整它來控制log4j的行為。
不要急于在真實環境下部署你的程序。想要測試的話,還是首先在Local?mode模式下觀察吧。如果在local?mode下測試的結果是符合預期的,而在真實環境下出錯,一般應是非代碼的因素造成的。你需要檢查節點的資源文件、自定義配置文件、依賴包等等。此外在local?mode下,所有日志打印信息是直接輸出到屏幕上的,這樣方便你看的更加清楚。
下面介紹下storm日志的結構:
所有的日志文件都存放在$STORM_HOME/logs/路徑下。
在nimbus節點上:nimbus.log記錄的是nimbus啟動過程中的輸出信息,包括啟動時間和各個worker和task初始化過程中打印信息等等。ui.log則記錄的storm監控程序啟動過程中的輸出信息,包括啟動時間等等。
在supervisor節點上:supervisor.log記錄的則是supervisor的相關啟動信息。worker-XXX(一個supervisor節點通常部署了多個worker)記錄的是消息傳遞、和任務執行過程中的輸出信息(也就是你代碼中的日志打印部分)。storm的設計目標之一是讓任務(task)部署對用戶透明。這樣造成了:當你需要觀察一個task的日志輸出信息時,你不知道到哪個節點的哪個日志文件去找這個信息。因此,還是強烈建議在local?mode下debug你的程序,然后在真實環境做好日志告警。
轉載于:https://my.oschina.net/u/2300159/blog/381295
總結
以上是生活随笔為你收集整理的storm日志bebug问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 二叉链表的建立和遍历 完整的前,中,后和
- 下一篇: [Mechine Learning A