Apache kafka 数据流中的Apache beam/KafkaIO吞吐量问题

Apache kafka 数据流中的Apache beam/KafkaIO吞吐量问题,apache-kafka,google-cloud-dataflow,apache-beam,Apache Kafka,Google Cloud Dataflow,Apache Beam,我使用ApacheBeam(数据流)来处理存储在Kafka中的消息。卡夫卡由3名经纪人组成。每个主题仅包含一个分区。(这意味着一个主题在一个消费群体中只能有一个消费者)我们使用Kafka.IO来阅读Kafka。(目前我们无法重新划分主题) 当其中一个主题有大量积压工作时,我会遇到吞吐量问题。 我做了各种测试,总而言之,与独立的Kafka客户端相比,我在ApacheBeam管道中获得了1/3的吞吐量。即使数据流扩展到X台机器 看起来,从Kafka读取消息后,它总是在同一台机器上处理,并且缓慢的管道

我使用ApacheBeam(数据流)来处理存储在Kafka中的消息。卡夫卡由3名经纪人组成。每个主题仅包含一个分区。(这意味着一个主题在一个消费群体中只能有一个消费者)我们使用Kafka.IO来阅读Kafka。(目前我们无法重新划分主题)

当其中一个主题有大量积压工作时,我会遇到吞吐量问题。 我做了各种测试,总而言之,与独立的Kafka客户端相比,我在ApacheBeam管道中获得了1/3的吞吐量。即使数据流扩展到X台机器

看起来,从Kafka读取消息后,它总是在同一台机器上处理,并且缓慢的管道对吞吐量有着普遍的影响。我说得对吗

在阅读卡夫卡约的文章后,我尝试使用:
.apply(“物化输入”,Reshuffle.viaramonkey())
。正如建议的那样。然后机器的扩展会产生影响,但是CPU利用率会变得疯狂,我需要使用更强大的机器

如何提高吞吐量还有其他想法吗

我的卡夫卡约配置:

PCollection readLines=p
.apply(“读自卡夫卡”,
卡夫卡约
.使用BootstrapServer(“10.150.0.17:9092”)
.withTopics(主题)
.withKeyDeserializer(KeyDeserializer.class)
.withValueDeserializer(ValueDeserializer.class)
.updateConsumerProperties(
新的ImmutableMap.Builder()
.put(ConsumerConfig.AUTO\u OFFSET\u RESET\u CONFIG,
“最早的”)
.put(ConsumerConfig.RECEIVE\u BUFFER\u CONFIG,524288)
.put(ConsumerConfig.SEND\u BUFFER\u CONFIG,524288)
.put(ConsumerConfig.GROUP\u ID\u CONFIG,“我的消费者组”)
.put(ConsumerConfig.ENABLE\u AUTO\u COMMIT\u CONFIG,false)
.put(kafkaavroderializerconfig.SCHEMA\u REGISTRY\u URL\u CONFIG,
"http://10.150.0.17:8081")
.put(kafkaavroderializerconfig.SPECIFIC\u AVRO\u READER\u CONFIG,false)
.build()
)
.commitofsetsinfinalize());

感谢您为此提交jira。我已经在一篇评论中对此发表了评论。如前所述,这可能是水槽中的瓶颈。Metrics&stacktraces可以证实这一点。你能为这个问题添加一个答案吗?这样其他人就会知道发生了什么。谢谢你为此提交了一份jira。我已经在一篇评论中对此发表了评论。如前所述,这可能是水槽中的瓶颈。Metrics&stacktraces可以证实这一点。你能为这个问题添加一个答案吗?这样其他人就会知道发生了什么。