如何在spark结构化流媒体应用程序中优化执行程序实例的数量?

问题描述 投票:0回答:1

Runtime

YARN群集模式

Application

  • Spark结构化流媒体
  • 从Kafka主题中读取数据

About Kafka topic

  • 1个主题,包含4个分区 - 现在。 (分区数可以更改)
  • 每1秒在主题中添加最多2000条记录。

我发现Kafka主题分区的数量与spark执行器的数量(1:1)相匹配。 所以,就我而言,直到现在我所知道的,4个火花执行者是我认为的解决方案。 但我担心数据吞吐量 - 可以确保2000 rec / sec? 是否有关于在spark结构流中设置正确配置的指导或建议? 尤其是spark.executor.coresspark.executor.instances或者关于遗嘱执行人的事情。

apache-spark spark-streaming spark-structured-streaming spark-streaming-kafka
1个回答
1
投票

spark.executor.cores设置为5或更低通常被认为是HDFS I / O吞吐量最佳的。你可以在这里阅读更多相关信息(或谷歌其他文章):https://blog.cloudera.com/blog/2015/03/how-to-tune-your-apache-spark-jobs-part-2/

每个Kafka分区都匹配一个火花核心,而不是执行者(一个火花核心可以有多个Kafka分区,但每个Kafka分区只有一个核心)。

确定所需的确切数字取决于许多其他内容,例如您的应用程序流(例如,如果您没有进行任何随机播放,则总核心数应该是您的Kafka分区),内存容量和要求等。

您可以使用配置并使用spark指标来确定您的应用程序是否正在处理吞吐量。

© www.soinside.com 2019 - 2024. All rights reserved.