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

时间:2019-04-02 12:19:08

标签: apache-spark spark-streaming spark-structured-streaming spark-streaming-kafka

运行时

YARN群集模式

应用程序

  • 火花结构化流式传输
  • 从Kafka主题中读取数据

关于Kafka主题

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

我发现Kafka主题分区的数量与spark执行程序的数量(1:1)相匹配。
因此,就我而言,到目前为止,我所知道的是,有4位火花执行器是我认为的解决方案。
但是我担心数据吞吐量-是否可以确保2000 rec / sec?

是否有关于在Spark结构化流中设置适当配置的任何指导或建议?
尤其是spark.executor.coresspark.executor.instances或有关执行者的东西。

1 个答案:

答案 0 :(得分:1)

对于HDFS I / O吞吐量,通常将spark.executor.cores设置为5或更小。您可以在此处(或Google其他文章)中了解更多信息: https://blog.cloudera.com/blog/2015/03/how-to-tune-your-apache-spark-jobs-part-2/

每个Kafka分区都匹配一个spark核心,而不是执行程序(一个spark核心可以具有多个Kafka分区,但是每个Kafka分区将恰好具有一个核心)。

确定所需的确切数目取决于许多其他因素,例如应用程序流程(例如,如果不进行任何改组,则内核总数应完全是您的Kafka分区),内存容量和要求等。< / p>

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