使用spark流的kafka多主题消费时的数据局部性问题

lokaqttq  于 2021-06-07  发布在  Kafka
关注(0)|答案(0)|浏览(204)

我们正在使用spark流媒体从Kafka消费者记录。
我们有13个节点,每个节点上有12个核心。
当我们用24个分区配置1个主题时,我们在spark使用者上为每个执行器配置24个执行器和1个核心。在这种情况下,没有问题,每个执行者被分配处理一个主题/分区,并且它在一个批处理到另一个批处理之间保持一致(任务位置级别是process\u local)。
当我们配置2个主题(例如第一个有19个分区,第二个有5个分区)时,我们会遇到性能问题,因为主题/分区处理不一致。某些主题/分区被分配到与另一个主题/分区不同的同一个执行器上处理,这可能会导致数据局部性问题(任务局部性级别是rack\u local)。
如何在所有执行器上对主题/分区进行一致的处理?
将spark consumer的配置更改为12个执行器,每个执行器上有2个内核并不能解决问题,因为在这种情况下,可以将3个任务分配给相同的执行器。问题仍然存在,8个执行器有3个核心,6个执行器有4个核心,4个执行器有6个核心。
我已经测试了一个主题和40个分区,仍然没有数据局部性问题,单主题处理更稳定。
Spark2.1
Kafka0.10.1
locationstrategy=首选一致

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题