如何通过 Eclipse 在本地 Cluster/Mode 中调试 Apache Storm
How to debug Apache Storm in Local Cluster/Mode through eclipse
使用以下问答,我设法在 Apache Storm 集群(运行ning 本地)上通过 eclipse 启用了调试。
我的 conf/storm.yaml
具有以下行以在工作节点上启用调试:
worker.childopts: "-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=y"
当我提交 Topology 到 storm 到 运行(在集群中)时,我可以在我的编辑器中设置断点和查看变量。
但是当我尝试在本地 运行 它时(在 Local Mode 中),我似乎无法通过 eclipse 连接(连接被拒绝)。
# I'm using storm crawler, I submit a topology like so:
storm jar target/storm-crawler-core-10.6-SNAPSHOT-jar-with-dependencies.jar \
com.digitalpebble.storm.crawler.CrawlTopology \
-conf crawler-conf.yaml \
-local
# ^ The `-local` runs it in a `LocalCluster`
# If I submit it to my actual cluster (without -local), I can debug it through eclipse.
# View the pastebin for all the output : http://pastebin.com/PEdA7fH0
I have included all the output from the above command to a pastebin. Click here to view it
More information on how storm crawler launches the LocalCluster.
我希望能够在本地模式下进行调试,这样我就可以在命令行中看到输出(当我通过我设置的断点时)并快速进行更改并重新 运行,基本上是为了加快我的开发流程。
当 运行在 LocalCluster (Local Mode) 中使用 Apache Storm 时,如何通过 eclipse 调试器调试我的代码?
如果您 运行 在本地模式下,则不涉及工作 JVM,即没有启动工作进程。因此,您的 worker.childopts
设置没有任何效果。
在 Eclipse 中调试它到 submit/start Eclipse 中的拓扑而不是命令行的最简单方法。你的 class CrawlTopology
有一个 main
方法,因此你可以直接在 Eclipse 中执行它(当然是在调试模式下)。您不需要指定 jar 文件名。只需在 Eclipse 运行 配置中指定选项 -conf crawler-conf.yaml -local
。
我们可以像调试 Eclipse 中的任何其他 java 代码一样调试 Storm Topology。我使用 LocalCluster 模式在 Eclipse 本身中启动我的拓扑。我能够调试 ShellBolts、Trident 螺栓等
此外,我还在我的 Eclipse 中添加了 storm-core 作为项目(而不是 maven 依赖项),这使我能够调试和了解 storm 内部发生的事情。有助于更好地跟踪元组确认、发出处理程序、锚点、超时、异常等。
在本地模式下,您可以使用例如
export STORM_JAR_JVM_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=localhost:8000"
在使用 Eclipse 调用 storm jar 命令进行远程调试之前。
使用以下问答,我设法在 Apache Storm 集群(运行ning 本地)上通过 eclipse 启用了调试。
我的 conf/storm.yaml
具有以下行以在工作节点上启用调试:
worker.childopts: "-agentlib:jdwp=transport=dt_socket,address=8000,server=y,suspend=y"
当我提交 Topology 到 storm 到 运行(在集群中)时,我可以在我的编辑器中设置断点和查看变量。
但是当我尝试在本地 运行 它时(在 Local Mode 中),我似乎无法通过 eclipse 连接(连接被拒绝)。
# I'm using storm crawler, I submit a topology like so:
storm jar target/storm-crawler-core-10.6-SNAPSHOT-jar-with-dependencies.jar \
com.digitalpebble.storm.crawler.CrawlTopology \
-conf crawler-conf.yaml \
-local
# ^ The `-local` runs it in a `LocalCluster`
# If I submit it to my actual cluster (without -local), I can debug it through eclipse.
# View the pastebin for all the output : http://pastebin.com/PEdA7fH0
I have included all the output from the above command to a pastebin. Click here to view it
More information on how storm crawler launches the LocalCluster.
我希望能够在本地模式下进行调试,这样我就可以在命令行中看到输出(当我通过我设置的断点时)并快速进行更改并重新 运行,基本上是为了加快我的开发流程。
当 运行在 LocalCluster (Local Mode) 中使用 Apache Storm 时,如何通过 eclipse 调试器调试我的代码?
如果您 运行 在本地模式下,则不涉及工作 JVM,即没有启动工作进程。因此,您的 worker.childopts
设置没有任何效果。
在 Eclipse 中调试它到 submit/start Eclipse 中的拓扑而不是命令行的最简单方法。你的 class CrawlTopology
有一个 main
方法,因此你可以直接在 Eclipse 中执行它(当然是在调试模式下)。您不需要指定 jar 文件名。只需在 Eclipse 运行 配置中指定选项 -conf crawler-conf.yaml -local
。
我们可以像调试 Eclipse 中的任何其他 java 代码一样调试 Storm Topology。我使用 LocalCluster 模式在 Eclipse 本身中启动我的拓扑。我能够调试 ShellBolts、Trident 螺栓等
此外,我还在我的 Eclipse 中添加了 storm-core 作为项目(而不是 maven 依赖项),这使我能够调试和了解 storm 内部发生的事情。有助于更好地跟踪元组确认、发出处理程序、锚点、超时、异常等。
在本地模式下,您可以使用例如
export STORM_JAR_JVM_OPTS="-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=localhost:8000"
在使用 Eclipse 调用 storm jar 命令进行远程调试之前。