Apache Spark的性能调优

时间:2017-07-07 08:49:11

标签: apache-spark

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

  1. spark.memory.fraction
  2. spark.memory.offHeap.size
  3. spark.storage.memoryFraction
  4. spark.shuffle.memoryFraction
  5. 我想知道我是否朝着正确的方向前进?请让 我知道如果我也错过了其他一些参数。

    提前致谢。

2 个答案:

答案 0 :(得分:2)

诚实地回答这是非常广泛的。优化性能的正确途径主要在关于Tuning Spark的部分的官方文档中进行了描述。

一般来说,有很多因素可以优化火花作业:

  • 数据序列化
  • 内存调整
  • 并行程度
  • 减少任务的内存使用
  • 广播大变量
  • 数据位置

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

编辑:

由@ zero323提供:

  

我要指出,问题中提到的除了一个选项之外的所有选项都已弃用,仅在传统模式下使用。

答案 1 :(得分:1)

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

  1. 让它运行
  2. 优化成本或时间
  3. 如果一般取决于所讨论的内存是否为火花执行内存或用户内存,则火花会溢出或OOM。我认为内存调整部分还将包括执行程序内存的总大小。

    关于第二个问题:如何优化成本,时间,计算等尝试Sparklens https://github.com/qubole/sparklens Shameless Plug(作者)。大多数情况下,真正的问题不在于应用程序是否缓慢,而是在扩展,还是使用给定的资源。对于大多数应用程序,答案是有限的。

    spark应用程序的结构对其可伸缩性产生了重要的限制。阶段中的任务数量,阶段之间的依赖关系,偏差以及在驱动程序端完成的工作量是主要限制因素。

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