Java 调试ApacheHeron调度程序

Java 调试ApacheHeron调度程序,java,intellij-idea,scheduling,stream-processing,heron,Java,Intellij Idea,Scheduling,Stream Processing,Heron,Twitter声称,与ApacheStorm相比,ApacheHeron的最大优势之一是调试能力,这是通过将每个Spoot/bolt任务移动到一个heron实例(JVM进程)而不是将多个任务捆绑到一个JMV(storm过去的做法)来实现的 这种方法确实有助于调试拓扑。但我的问题是,如何尝试调试heron的核心部分,如调度器或资源管理部分。除了记录/打印输出外,还有其他方法吗?因为这是一个非常耗费时间和精力的过程。有没有办法使用IDE之类的工具(例如IntelliJ)来设置一些检查点并调试hero

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

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


提前感谢。

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

Heron文档中添加了一个疑难解答部分(请参见调试Java拓扑),该部分提供了远程调试Heron所需的说明。这很好,但不是我需要的,因为它只用于调试实例(螺栓/喷嘴…)。但我需要调试核心部件,如调度器、启动器等

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

地址:您在IDE中配置的端口

suspend:y表示在客户端(调试器或IDE)连接到服务器(jvm进程)之前暂停执行

您可以在中的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中开始调试,它将带您到检查点。只要记住在执行路径中添加检查点,SubmiterMain或SchedulerMain都是很好的候选者

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