Dav*_*ics 5 performance processing-efficiency memory-efficient apache-spark rdd
假设我有两个大小为 M1 和 M2 的 RDD,它们平均分布在 p 个分区中。
我很想知道(理论上/大约)操作过滤器、映射、leftOuterJoin、++、reduceByKey 等的成本是多少。
谢谢您的帮助。
小智 5
要衡量执行成本,了解 Spark 执行的执行方式非常重要。
简而言之,当您在 RDD 上执行一组转换时,Spark 将创建一个执行计划(又名 DAG),并将它们以阶段的形式分组在一起,一旦您触发操作,阶段就会执行。
像map/filter/flatMap这样的操作被组合在一起形成一个阶段,因为它们不会引起洗牌,而像join、reduceByKey这样的操作将创建更多阶段,因为它们涉及要在执行器之间移动的数据。actionSpark作为一个序列执行stages(如果它们彼此独立,则按顺序或并行执行)。并且,每个任务都stage作为多个并行执行tasks,其中一次运行的任务数量取决于 RDD 的分区和可用资源。
衡量运营成本的最佳方法是查看 SparkUI。打开 Spark UI(如果您在本地模式下运行,默认情况下它将位于 localhost:4040)。您会在页面顶部找到几个选项卡,单击其中任何一个选项卡后,您将被定向到显示相应指标的页面。
以下是我衡量性能的方法:
Job=> 执行其所有stages.Stage执行每个并行的成本平均值。tasksTask=> 默认情况下,一个任务消耗一个CPU核心。UI 中给出了消耗的内存,这取决于分区的大小。stage由于 Spark 将这些转换组合在一起并在 RDD 的分区上执行它们,因此为 a 中的每个转换导出指标确实很困难。
| 归档时间: |
|
| 查看次数: |
1629 次 |
| 最近记录: |