【问题标题】:How to optimize number of executor instances in spark structured streaming app?如何优化 Spark 结构化流应用程序中的执行程序实例数量?
【发布时间】:2019-08-23 18:31:37
【问题描述】:

运行时

YARN 集群模式

应用

  • Spark 结构化流式处理
  • 从 Kafka 主题读取数据

关于Kafka主题

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

我发现Kafka主题分区的数量与spark executor的数量(1:1)匹配。
所以,就我而言,到目前为止我所知道的,4 个 spark executor 是我认为的解决方案。
但我担心数据吞吐量——能保证 2000 rec/sec 吗?

是否有关于在火花结构化流中设置正确配置的任何指导或建议?
尤其是spark.executor.cores、spark.executor.instances或者关于executor的东西。

【问题讨论】:

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


    【解决方案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 分区都匹配一个 spark 核心,而不是 executor(一个 spark 核心可以有多个 Kafka 分区,但每个 Kafka 分区只有一个核心)。

    确定您需要的确切数字是多少取决于许多其他因素,例如您的应用程序流程(例如,如果您不进行任何 shuffle,那么总内核数应该正是您的 Kafka 分区)、内存容量和要求等。

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

    【讨论】:

    • “一个 spark 核心可以有多个 Kafka 分区,但每个 Kafka 分区将只有一个核心”——您可以为此链接一些来源吗?我在结构化流或 kafka 集成指南中找不到任何相关信息。
    猜你喜欢
    • 2021-02-09
    • 1970-01-01
    • 1970-01-01
    • 2015-08-28
    • 1970-01-01
    • 2020-07-08
    • 2020-02-20
    • 2019-04-30
    • 2017-09-21
    相关资源
    最近更新 更多