我正在尝试将storm / flux拓扑部署到远程服务器。拓扑成功部署,但在服务器风暴UI上,它显示了spout lag错误:
无法获得kafka的偏移滞后。原因: org.apache.zookeeper.KeeperException $ NoNodeException:KeeperErrorCode = org.apache.zookeeper.keeperExceptiom.create中的/ brokers / topics / blockdata / partitions的NoNode ...
虽然我已经使用以下内容检查了我的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"
注意:此拓扑在本地模式下运行良好。
请参阅以下屏幕截图:
答案 0 :(得分:1)
这是来自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。
答案 1 :(得分:0)
您不得使用collector.ack(tuple);会导致Spout重复发送元组,并且不会在Zookeeper中记录偏移量。