gpt4 book ai didi

java - 调试 apache heron 调度程序

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:53:06 25 4
gpt4 key购买 nike

Twitter 声称与 apache storm 相比,apache heron 的最大优势之一是调试能力,这是通过将每个 spout/bolt 任务移动到一个 Heron 实例(一个 JVM 进程)来实现的将多个任务捆绑到一个 JMV(storm 过去是如何做到的)。

这种方法确实有助于调试拓扑。但我的问题是,如何尝试调试 heron 的核心部分,如调度程序或资源管理部分。除了记录/打印输出之外,还有其他方法吗?因为这是一个真正耗时耗力的过程。有没有办法在heron中使用IDE之类的工具(例如IntelliJ)来设置一些检查点并调试整个调度任务的过程?

提前致谢。

最佳答案

在与这个问题斗争了很长时间之后,在 Heron 开发人员的帮助下,我终于找到了答案(向他们致敬)。答案是远程调试 jvm 进程。

故障排除部分(参见 Debugging Java topologies at this page)已添加到 Heron 文档中,提供远程调试 heron 所需的说明。这很好但不是我需要的,因为它仅用于调试实例( bolt /喷嘴......)。但我需要调试核心部分,如调度器、启动器等。

要为 heron 启用完整的远程调试,您应该将第二行添加到 execute.py(可以在 heron/tools/cli/src/python) 文件:

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 包。编译安装heron

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

现在将你的检查点放在你想要的任何地方,并从终端提交你的拓扑,然后在 IDE 中开始调试,它将带你到检查点。请记住将检查点添加到执行路径,SubmitterMain 或 SchedulerMain 可能是不错的选择。

关于java - 调试 apache heron 调度程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38694622/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com