2016-08-01 25 views
3

Twitter聲稱apache蒼鷺與apache風暴相比最大的優勢之一是debug-ability,這是通過將每個spout/bolt任務移動到一個Heron實例(JVM進程)而不是將多個任務捆綁到一個JMV(風暴如何使用它)。調試apache蒼鷺sccheduler

這種方法真的有助於調試拓撲。但我的問題是,如何試圖調試調度器或資源管理部分等蒼鷺的核心部分。除了記錄/打印輸出之外,還有其他的方法嗎?因爲這是一個真正的時間&能源消耗過程。有沒有辦法像IDE一樣使用工具(例如IntelliJ)來設置一些檢查點並調試蒼鷺中的任務計劃的整個過程?

在此先感謝。

回答

0

在經過了很長時間的這個問題之後,我終於找到了一個答案,在Heron開發者的幫助下(對他們而言)。 答案是遠程調試jvm進程。

甲故障排除部分(參見調試Java拓撲this page)已經被添加到文檔蒼鷺給出用於遠程調試鷺需要的指令。這很好,但不是我所需要的,因爲它僅用於調試實例(螺栓/噴口......)。但我需要像調度調試核心部件,發射器等

爲了使全遠程調試爲鷺你應該添加第二行到execute.py(可以在這裏找到鷺/工具/ CLI/SRC /蟒蛇)文件:

java_opts = ['-D' + opt for opt in java_defines] 
//add this line here 
java_opts.append('-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005') 

地址:你已經在你的IDE配置的端口。

suspend:y表示掛起執行,直到客戶端(調試器或IDE)連接到服務器(jvm進程)。

您可以在this link中找到在Intellij中設置遠程調試的說明。

重要提示:不要忘記重新編譯源代碼並安裝bin軟件包。 編譯並安裝鷺

bazel build --config=ubuntu heron/... 
bazel run --config=ubuntu -- scripts/packages:heron-client-install.sh --user 
bazel run --config=ubuntu -- scripts/packages:heron-api-install.sh --user --maven 

現在把你的關卡,無論你想從終端提交您的topologiy,然後在IDE中開始調試,它會帶你到檢查點。只要記住要將檢查點添加到執行路徑中,SubmitterMain或SchedulerMain就可以成爲很好的候選者。

相關問題