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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在spark结构化流媒体应用程序中优化执行程序实例的数量?相关的知识,希望对你有一定的参考价值。

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或者关于遗嘱执行人的事情。

答案

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指标来确定您的应用程序是否正在处理吞吐量。

以上是关于如何在spark结构化流媒体应用程序中优化执行程序实例的数量?的主要内容,如果未能解决你的问题,请参考以下文章

替代递归运行Spark-submit作业

总结Spark优化-多Job并发执行

Tweepy流媒体套接字无法发送预处理的文本

Spark结构化流内存绑定

如何优化 Apache Spark 应用程序中的 shuffle 溢出

如何在 Spark 中确定最佳 shuffle 分区数