- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
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/
我可以在Liunx操作系统上部署Twitterheron集群,但我不知道heron是否可以部署在Window操作系统上? 此外,如果我想使用 IntelliJ IDEA 运行 Heron 项目,我应该
比较Flink与Spark流,Flink与Storm和Storm与Heron有很多问题。 这个问题的起源是因为Apache Flink和Twitter Heron都是真正的流处理框架(不是像Spark
我正在尝试打印给定长度的三角形的面积和周长。我已成功打印出正确的周长,但是我的面积不正确(面积的输出为 0.00)。我意识到这是精度错误的损失,但是我无法解决它。有人请检查这段代码并指出问题,特别是在
以下代码应该使用 Heron 方法返回平方根。我试图在其中找到一个“错误”,但老实说,我没能发现它。我对“var prevGuess = n”语句有疑问。 “n”如何第一次工作?那是错误吗?“修复”是
我的代码: function calculate(sides) { var sides = prompt("Triangle side lengths in cm (number,number
Twitter 声称与 apache storm 相比,apache heron 的最大优势之一是调试能力,这是通过将每个 spout/bolt 任务移动到一个 Heron 实例(一个 JVM 进程)
编辑//我可能认为 Programmr.com 用来检查答案输出与预期输出的代码是错误的。因为这里所有的答案几乎都是一样的公式,而且关于英雄公式的维基页面上的公式也和这里的答案一样。 在本练习中,完成
我已经实现了这个功能: double heron(double a) { double x = (a + 1) / 2; while (x * x - a > 0.000001) {
Heron's method生成代表 √n 越来越好的近似值的数字序列。序列中的第一个数字是任意猜测;序列中的每个其他数字都是从前一个数字 prev 使用以下公式获得的: (1/2)*(pre
我尝试使用以下代码从zookeeper获取PhysicalPlan: String stateMgrClass = Context.stateManagerClass(this.config); IS
我是一名优秀的程序员,十分优秀!