Storm Ui错误kafka spout,不使用HDP

Posted

技术标签:

【中文标题】Storm Ui错误kafka spout,不使用HDP【英文标题】:Storm Ui error kafka spout, not using HDP 【发布时间】:2018-03-01 04:35:00 【问题描述】:

我在我的机器上安装了 Storm 1.1.1,在另一台机器上我使用的是 Kafka 版本 0.10.0.1。这两个服务都与 Zookeeper 3.4.6 版连接

我成功部署了我的拓扑,如下所示:

public class SOTopology  
    public static void main (String[] args ) throws Exception 
        final String brokers = args[0];
        final String kafkaTopic = args[1];
        final String mongo_uri = args[2];
        final String mongo_collection = args[3];
    
        TopologyBuilder topology = new TopologyBuilder();
        topology.setSpout("KafkaSpout",new KafkaSpout<>(KafkaSpoutConfig.builder(brokers, kafkaTopic).build()), 1);
        topology.setBolt("FilterBolt", new Filterbolt(),1).shuffleGrouping("KafkaSpout");
        topology.setBolt("TagCountBolt", new TagCountBolt(),1).shuffleGrouping("FilterBolt");
        topology.setBolt("TopicBolt", new TopicBolt(),1).shuffleGrouping("FilterBolt");
        topology.setBolt("MongoDBBolt",new MongoDBBolt(),1).shuffleGrouping("TagCountBolt").shuffleGrouping("TopicBolt");

        Config conf = new Config();
        conf.setDebug(true);
        conf.put("mongo.uri", mongo_uri);
        conf.put("mongo.collection", mongo_collection);
        conf.setMaxSpoutPending(40);
        conf.setNumWorkers(10);
        conf.setDebug(true);

        StormSubmitter.submitTopology("***Topology", conf, topology.createTopology());
    

当我转到我的 StormUI 时,我收到以下消息 Offset lags for kafka not supported for older versions. Please update kafka spout to latest version. 我没有使用 HDP,但我已经在使用最新的 Storm 版本,并且我的storm-clients.jar 和storm-kafka-client.jar 都适用于1.1.1 版。谁知道我该如何解决这个问题?

编辑:在可能的重复中,他们正在使用 HDP,他们通过更新他们的 HDP 集群来修复它。由于我没有在 HDP 上运行它,因此我无法真正更新我的 HDP 集群,而且我确信我的 Storm 是正确的版本。

【问题讨论】:

Storm UI throwing "Offset lags for kafka not supported for older versions. Please update kafka spout to latest version."的可能重复 @vatsalmevada 在他们使用 HDP 的可能副本中,他们通过更新他们的 HDP 集群来修复它。由于我没有在 HDP 上运行它,因此我无法真正更新我的 HDP 集群,而且我确信我的 Storm 是正确的版本。 您是否还确定您没有为storm-clients 和storm-kafka-client 提供多个jar(可能添加不同版本作为其他库的依赖项的一部分)? 是的,我反复检查了多次,以确保我只使用了正确版本的所需罐子。我正在从org.apache.storm.kafka.spout 导入以下KafkaSpout, KafkaSpotConfig,这是我从storm-kafka-client-1.1.1.jar 获得的,并且那里没有其他版本 @SebastienPattyn 我看了看日志,显然 UI 仍然使用旧的 java 类 org.apache.storm.kafka.KafkaSpout 而不是使用新的 API org.apache.storm.kafka.spout.KafkaSpout,所以当它尝试连接到 KafkaSpout 时出现错误,为了解决这个问题,我只是回滚到旧版本的 kafka (0.8.2.2) 并在我的 java 代码中使用旧的storm kafka API,现在它似乎可以工作了。 【参考方案1】:

如链接问题中所述:解决方案是升级到平台的最新版本。

如果您出于某种原因设法避免分发,这在提出问题时可能是不可能/不切实际的,但由于我们已经过了几年,现在肯定是可以升级的情况。 (而且可能已经有了)。

【讨论】:

以上是关于Storm Ui错误kafka spout,不使用HDP的主要内容,如果未能解决你的问题,请参考以下文章

Storm Kafka Spout 上的最大元组重播数

使用 Kafka Spout 的 Kafka Storm 集成

Storm-Kafka 多个 spout,如何分担负载?

jstorm在使用kafka作为spout的时候多线程问题

kafka + storm 错误 Async loop died

storm问题记录 python 不断向kafka中写消息,spout做为消费者从kafka中读消息并emit给bolt,但是部分消息没有得到bolt的处理