在直接方法中将dstream中的分区数增加到大于kafka分区

tjjdgumg  于 2021-06-07  发布在  Kafka
关注(0)|答案(2)|浏览(401)

按照直接方法,它们是32个kafka分区和32个消费者。但是32个消费者的数据处理速度比kafka的速度(1.5倍)慢,这在kafka中造成了数据积压。
我想增加每个使用者接收的数据流的分区数。
我希望解决方案是增加消费者的分区,而不是在kafka中增加分区。

kx1ctssn

kx1ctssn1#

假设您有足够的硬件资源分配给使用者,您可以检查以下参数

spark.streaming.kafka.maxRatePerPartition

您可以设置每秒从单个kafka分区消耗的记录数。

dm7nw8vv

dm7nw8vv2#

在直接流方法中,最多可以有#消费者=#分区。kafka不允许每个group.id的每个分区有多个使用者。顺便说一句,你要求更多的分区每个消费者?这将不会有帮助,因为您的消费者已经在满负荷运行,仍然是不够的。
您可以尝试通过一些技术更改来减少Kafka上的数据积压:
增加分区的数量-尽管您不想这样做,但这仍然是最简单的方法。有时平台只需要更多的硬件。
在用户端优化处理—在处理前检查重复记录消除的可能性,减少磁盘i/o,循环展开技术等,以减少用户所花的时间。
(更高的难度)受控的数据分发—通常会发现某些分区能够比其他分区处理得更好。如果在您的平台上是这样的话,可能值得一看。kafka的数据分发策略有一些首选项(以及消息键),这些首选项通常会导致集群内的负载不均匀:https://www.cloudera.com/documentation/kafka/latest/topics/kafka_performance.html

相关问题