本篇內容介紹了“storm日志如何debug”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
開發storm應用時可能需要用到自身的配置文件。storm.yaml只能提供給storm自身的配置系統使用。針對后臺最廣泛使用的ini配置文件,推薦使用ini4j。它是一個輕量的ini配置文件讀取器、具有簡單易懂的api。
請在spout和bolt的prepare方法中讀取配置文件。任何資源類的初始化都需要放到prepare方法中(比如數據庫連接,和讀取文件索引類等)。
I 打包storm程序請不要把依賴打進去,依賴需要單獨部署;
II 你需要一種有效的機制將程序的依賴包分發到所有的storm節點上(可上傳到nimbus,通過rsync做目錄同步);
III 你需要分發的依賴包集合=你的程序所有的依賴包集合 ? storm依賴包與你的依賴包的交集(否則topology會初始化失?。?/p>
IV 在所有supervisor節點上自定義配置文件的內容和路徑需要完全一致,路徑不一致topology會初始化失敗,內容不一致,程序的行為則是未定義的;
在經過一番辛勤勞動之后,你的程序編譯成功了。但是,這不代表著它會按照你設定的行為去運行。如何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你的程序,然后在真實環境做好日志告警。
“storm日志如何debug”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。