当前位置: 首页 > 知识库问答 >
问题:

阿帕奇StormKafka喷出滞后问题

宗增
2023-03-14

我正在使用Storm 1.1.2和Kafka 0.11构建一个Java Spring应用程序,将在Docker容器中启动。

我的拓扑中的所有东西都按计划工作,但在Kafka的高负载下,Kafka滞后会随着时间的推移越来越大。

我的KafKaspoutConfig:

 KafkaSpoutConfig<String,String> spoutConf = 
     KafkaSpoutConfig.builder("kafkaContainerName:9092", "myTopic")
     .setProp(ConsumerConfig.GROUP_ID_CONFIG, "myGroup")
     .setProp(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, MyObjectDeserializer.class)
     .build()

那么我的拓扑结构如下

TopologyBuilder builder = new TopologyBuilder();

builder.setSpout("stormKafkaSpout", new KafkaSpout<String,String>(spoutConf), 25);

builder.setBolt("routerBolt", new RouterBolt(),25).shuffleGrouping("stormKafkaSpout");

Config conf = new Config();
conf.setNumWorkers(10);
conf.put(Config.STORM_ZOOKEEPER_SERVERS, ImmutableList.of("zookeeper"));
conf.put(Config.STORM_ZOOKEEPER_PORT, 2181);

conf.put(Config.NIMBUS_SEEDS, ImmutableList.of("nimbus"));
conf.put(Config.NIMBUS_THRIFT_PORT, 6627);

System.setProperty("storm.jar", "/opt/storm.jar");

StormSubmitter.submitTopology("topologyId", conf, builder.createTopology());
conf.setNumAckers(0);
conf.put(Config.TOPOLGY_ACKER_EXECUTORS, 0);

共有1个答案

李敏学
2023-03-14

您可能会受到https://issues.apache.org/jira/browse/storm-3102的影响,这会导致spout对每一次发射都进行非常昂贵的调用。请尝试升级到其中一个已修复的版本。

编辑:修复实际上还没有发布。您可能仍然希望通过使用https://github.com/apache/storm/tree/1.1.x-branch从源代码处构建spout来尝试该修复,以构建一个1.1.4快照。

 类似资料:
  • 我正在用Apache Storm 1.1.2和Kafka0.11在Java9中构建一个Spring应用程序 我注意到,在高负载(每秒2500条消息)下,Kafka喷口有一个非常高的滞后。Kafka喷口有一个平行性提示3。滞后几乎等于喷口提交的偏移。 这个滞后设置了拓扑每秒可以摄取的最大消息量的上限,这并不是很大。有人知道解决这个问题的办法吗? 更新:我还注意到,即使有10个工作者和4个并行性提示,

  • Apache Kafka:分布式消息传递系统 Apache Storm:实时消息处理 我们如何在实时数据管道中使用这两种技术来处理事件数据? 在实时数据管道方面,我觉得两者做的工作是一样的。如何在数据管道上同时使用这两种技术?

  • 我在Apache Storm拓扑上运行了一个性能测试,并注意到kinesis-spout中的“failed”计数非常高(几乎占了元组的1/3)。这个数值是多少?

  • 我正在尝试用我的Storm设置实现最大的性能。我正在通过Kafka发送数以万计的消息,这些消息将被Storm拓扑接收。 当我在Storm UI中查看时,我注意到所有消息都流向一个执行器,而不是在所有执行器之间进行负载平衡。(见附件截图)。

  • 我正在使用Flink从Apache Pulsar读取数据。我在pulsar中有一个分区主题,有8个分区。在本主题中,我生成了1000条消息,分布在8个分区中。我的笔记本电脑中有8个内核,因此我有8个子任务(默认情况下,并行度=#个内核)。在执行Eclipse中的代码后,我打开了Flink UI,发现一些子任务没有收到任何记录(空闲)。我希望所有8个子任务都能得到利用(我希望每个子任务都映射到我的主