【问题标题】:Apache Spark's performance tuningApache Spark 的性能调优
【发布时间】:2018-05-25 13:53:55
【问题描述】:

我正在做一个项目,我必须在其中调整 spark 的性能。我发现了四个最重要的参数,它们将有助于调整 spark 的性能。它们如下:

  1. spark.memory.fraction
  2. spark.memory.offHeap.size
  3. spark.storage.memoryFraction
  4. spark.shuffle.memoryFraction

我想知道我的方向是否正确?请让 我知道我是否也错过了一些其他参数。

提前致谢。

【问题讨论】:

    标签: apache-spark


    【解决方案1】:

    诚实地回答这个问题相当广泛。优化性能的正确路径主要在官方文档中关于Tuning Spark部分的描述。

    一般来说,优化 Spark 作业有很多因素:

    • 数据序列化
    • 内存调整
    • 并行度
    • Reduce 任务的内存使用情况
    • 广播大变量
    • 数据局部性

    它主要集中在数据序列化、内存调整和精度/近似技术之间的权衡以快速完成工作。

    编辑:

    感谢@zero323:

    我要指出,除了问题中提到的一个选项外,其他所有选项均已弃用且仅在旧模式下使用。

    【讨论】:

    • 我要指出,除了问题中提到的一个选项外,所有选项均已弃用,仅在旧模式下使用。
    • 谢谢@zero323!
    【解决方案2】:

    我们可以将问题分为两部分。

    1. 让它运行
    2. 针对成本或时间进行优化

    如果一般取决于所讨论的内存是 spark 执行内存还是用户内存,spark 将溢出或 OOM。我认为内存调整部分还会包括执行程序内存的总大小。

    第二个问题:如何优化成本、时间、计算等,试试 Sparklens https://github.com/qubole/sparklensShameless Plug(作者)。大多数时候,真正的问题不是应用程序是否缓慢,而是它是否会扩展,或者是否使用给定的资源。对于大多数应用程序,答案是有上限的。

    spark 应用程序的结构对其可扩展性施加了重要限制。一个阶段中的任务数量、阶段之间的依赖关系、偏差和驱动端完成的工作量是主要的约束条件。

    Sparklens 的最佳功能之一是它模拟并告诉您 Spark 应用程序在不同的执行器数量下将如何执行,以及每个执行器数量的预期集群利用率水平是多少。帮助您在时间和效率之间做出正确的权衡。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多