我正在尝试将 storm/flux 拓扑部署到远程服务器。拓扑成功部署,但在服务器风暴 UI 上,它显示了 spout lag 错误:
无法获得 kafka 的偏移滞后。原因:org.apache.zookeeper.KeeperException$NoNodeException:KeeperErrorCode = org.apache.zookeeper.keeperExceptiom.create 的 NoNode 在 org.apache.zookeeper.keeperExceptiom.create...
虽然我已经使用以下方法检查了我的 zookeeper:
ls /brokers/topics/blockdata/partitions, it exists.
这是我的 spout 配置:
- id: "zkHosts"
className: "org.apache.storm.kafka.ZkHosts"
constructorArgs:
- "172.25.33.191:2181"
- id: "startingOffsetTime"
className: "kafka.api.OffsetRequest"
factory: "LatestTime"
- id: "spoutConfig"
className: "org.apache.storm.kafka.SpoutConfig"
constructorArgs:
- ref: "zkHosts"
- "blockdata"
- "/brokers/topics"
- "myId"
properties:
- name: "ignoreZkOffsets"
value: true
- name: "scheme"
ref: "stringMultiScheme"
- name: "startOffsetTime"
ref: "startingOffsetTime"
注意:此拓扑在本地模式下运行良好.
请看下面的截图:
2 回答
这是来自 Storm UI 的一部分,它应该向您显示您的喷口在日志结束偏移后面的距离。如果你有兴趣,代码在这里https://github.com/apache/storm/blob/v1.2.1/external/storm-kafka-monitor/src/main/java/org/apache/storm/kafka/monitor/KafkaOffsetLagUtil.java
请尝试让拓扑运行一段时间,然后尝试重新打开 Storm UI 并查看错误是否一直发生。在 Kafka 鲸鱼喷水设法写信给 Zookeeper 之前,你可能碰巧打开了 Storm UI。
你不能使用 collector.ack(tuple);在你的 bolt.It 中导致 Spout 重复发送元组并且不在 zookeeper 中记录偏移量。