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

暴风-Kafka多重喷口,如何分担负荷?

南门承教
2023-03-14

谢谢你抽出时间。

通过在每个分区上使用800 MB数据进行泛洪测试,完成读取需要22秒

再次使用parallelism_hint=1的代码
builder.setspout(“spout”,new KafkaSpout(cfg),1);

public SpoutDeclarer setSpout(java.lang.String id,
                              IRichSpout spout,
                              java.lang.Number parallelism_hint)

其中,
parallelism_hint-是应该分配给执行此spout的任务数。每个任务将在集群周围某个进程的线程上运行。

共有1个答案

慕容坚
2023-03-14

我在storm-user上遇到过一个讨论,讨论了类似事情。

阅读喷口平行度与Kafka分区数之间的关系。

使用kafka-spout for storm时需要注意的两件事

    null
List<HostPort> hosts = new ArrayList<HostPort>();
hosts.add(new HostPort("localhost",9092));
SpoutConfig objConfig=new SpoutConfig(new KafkaConfig.StaticHosts(hosts, 4), "spoutCaliber", "/kafkastorm", "discovery");
builder.setSpout("spout", spout,4);

您可以在使用setspout方法将您的spout添加到拓扑中时提及相同的内容。这里4是并行性提示。

更多可能有帮助的链接

理解Storm拓扑的并行性

 类似资料:
  • 我已经开始使用storm,所以我使用本教程创建简单的拓扑 我的嘴是这样的 我的螺栓是这样的

  • 我试图使Kafka消费者同步消费Kafka的消息。 我遇到的实际问题是消息队列存储在Storm Spout中。 我想做的是让暴风雪等待Kafka的回复,然后让暴风雪消耗下一条信息。 我正在使用Storm KafkaSpout: 我已经更新到Storm 2.0.0,我使用Storm kafka客户端。但是如果我将Storm队列配置为50:

  • 我使用storm0.9.4和storm-kafka:0.9.0-wip16a-scala292作为从kafka0.7读取的依赖项。 我们的Kafka保留政策是7天。 我从经纪人的最新偏移量开始读取。

  • 这里可能发生了同样的事情:错误backtype.storm.util-Async循环死亡!BufferUnderFlowException:null,但我将添加一个完整的堆栈跟踪和一些更多的上下文。 Storm版本-9.3 Storm-Kafka版本-9.3 Kafka版本-0.8.2-beta 堆栈跟踪: Spout代码(注意,出于调试目的,我使用的是一个静态定义的分区映射,只有一个代理):

  • 当运行两个线程时,对于spout,文件的每一行都读取两次。 我是新手,我想知道处理这件事的最好方法?我可以将线程的数量减少到1个,或者修改spout,使每个线程读取不同的行--或者(如何)我需要使用TopologyContext参数?我不确定我是否错过了一个“Storm”的方式来解决这个问题?

  • 我确实意识到Kafka中保证了每个分区的顺序。但是当有多个分区并且生产者没有指定键,而只有1个消费者时,分区会受到什么影响(为什么有1个消费者?对于当前数据加载1很好,有多个分区供将来使用) 1) 订购是否会受到影响? 2) 使用者是否会从分区0,1读取数据。。20一个接一个按顺序? 3) 即使我们指定了分区键,我们是否可以保证我们会进行适当的排序?(哈希冲突的情况除外)