如何优化 spark structured streaming app 中执行器实例的数量?
How to optimize number of executor instances in spark structured streaming app?
运行时间
YARN 集群模式
申请
- Spark 结构化流
- 从 Kafka 主题读取数据
关于 Kafka 主题
- 1 个主题,4 个分区 - 现在。 (可以更改分区数)
- 主题中每 1 秒最多添加 2000 条记录。
我发现 Kafka 主题分区的数量与 spark 执行器的数量匹配 (1:1)。
因此,就我而言,到目前为止我所知道的是,4 个 spark 执行器是我认为的解决方案。
但是我担心数据吞吐量——能保证2000rec/sec?
关于在 spark structured streaming 中设置正确的配置是否有任何指导或建议?
特别是 spark.executor.cores
、spark.executor.instances
或关于执行者的东西。
将 spark.executor.cores
设置为 5 或更少通常被认为是 HDFS I/O 吞吐量的最佳选择。您可以在此处阅读更多相关信息(或 google 其他文章):
https://blog.cloudera.com/blog/2015/03/how-to-tune-your-apache-spark-jobs-part-2/
每个 Kafka 分区都匹配一个 spark 核心,而不是执行器(一个 spark 核心可以有多个 Kafka 分区,但每个 Kafka 分区只有一个核心)。
确定您需要的确切数量取决于许多其他因素,例如您的应用程序流程(例如,如果您没有进行任何洗牌,则总核心数应该恰好是您的 Kafka 分区)、内存容量和要求等.
您可以使用这些配置并使用 spark 指标来确定您的应用程序是否正在处理吞吐量。
运行时间
YARN 集群模式
申请
- Spark 结构化流
- 从 Kafka 主题读取数据
关于 Kafka 主题
- 1 个主题,4 个分区 - 现在。 (可以更改分区数)
- 主题中每 1 秒最多添加 2000 条记录。
我发现 Kafka 主题分区的数量与 spark 执行器的数量匹配 (1:1)。
因此,就我而言,到目前为止我所知道的是,4 个 spark 执行器是我认为的解决方案。
但是我担心数据吞吐量——能保证2000rec/sec?
关于在 spark structured streaming 中设置正确的配置是否有任何指导或建议?
特别是 spark.executor.cores
、spark.executor.instances
或关于执行者的东西。
将 spark.executor.cores
设置为 5 或更少通常被认为是 HDFS I/O 吞吐量的最佳选择。您可以在此处阅读更多相关信息(或 google 其他文章):
https://blog.cloudera.com/blog/2015/03/how-to-tune-your-apache-spark-jobs-part-2/
每个 Kafka 分区都匹配一个 spark 核心,而不是执行器(一个 spark 核心可以有多个 Kafka 分区,但每个 Kafka 分区只有一个核心)。
确定您需要的确切数量取决于许多其他因素,例如您的应用程序流程(例如,如果您没有进行任何洗牌,则总核心数应该恰好是您的 Kafka 分区)、内存容量和要求等.
您可以使用这些配置并使用 spark 指标来确定您的应用程序是否正在处理吞吐量。