我在哪里可以找到Spark的运营成本?

时间:2016-05-07 18:17:52

标签: performance apache-spark rdd processing-efficiency memory-efficient

假设我有两个尺寸为M1和M2的RDD,分配到p分区。

我有兴趣知道(理论上/近似)操作过滤器,map,leftOuterJoin,++,reduceByKey等的成本是什么

感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

要衡量执行成本,了解如何执行spark执行非常重要。

简而言之,当您在RDD上执行一组转换时,spark将创建一个执行计划(也称为DAG),并以stages的形式将它们组合在一起,一旦触发操作就会执行。

map / filter / flatMap等操作组合在一起构成一个阶段,因为它们不会发生混乱,而join,reduceByKey等操作会创建更多阶段,因为它们涉及跨执行程序移动的数据。 Spark执行action作为stages的序列(如果它们彼此独立,则顺序执行或并行执行)。并且,每个stage都会被执行为多个并行tasks,其中一次运行的任务数量取决于RDD的分区和可用资源。

衡量运营成本的最佳方法是查看SparkUI。打开spark UI(默认情况下,如果您在本地模式下运行,它将在localhost:4040)。您可以在页面顶部找到几个标签,一旦您点击其中任何标签,您就会被定向到页面,该页面将显示相应的指标。

以下是我衡量绩效的方法:

  • Job =>的费用执行所有stages
  • 的费用总和
  • Stage =>的费用在舞台上执行每个并行tasks的成本的平均值。
  • Task =>的费用默认情况下,任务占用一个CPU核心。消耗的内存在UI中给出,取决于分区的大小。

由于Spark结合了这些转换并在RDD的分区上一起执行,因此很难为stage内的每个转换导出指标。