【问题标题】:Spark execution memory monitoring [closed]Spark执行内存监控[关闭]
【发布时间】:2018-07-23 21:42:47
【问题描述】:

我想要的是能够监控 Spark 执行内存,而不是 SparkUI 中可用的 存储内存。我的意思是,执行内存不是执行内存

我的意思是执行内存:

此区域用于在执行 shuffle、join、排序和聚合时缓冲中间数据。这个区域的大小是通过 spark.shuffle.memoryFraction (default0.2) 配置的。 根据:Unified Memory Management in Spark 1.6

在密集搜索答案后,我发现除了未回答的 StackOverflow 问题、仅与存储内存相关的答案或具有模糊答案类型的答案使用 Ganglia使用 Cloudera 控制台 等等……

在 Stack Overflow 上似乎需要此信息,但还没有一个令人满意的答案。以下是 StackOverflow 在搜索 monitoring spark memory

时的一些热门帖子

Monitor Spark execution and storage memory utilisation

Monitoring the Memory Usage of Spark Jobs

SPARK: How to monitor the memory consumption on Spark cluster?

Spark - monitor actual used executor memory

How can I monitor memory and CPU usage by spark application?

How to get memory and cpu usage by a Spark application?

问题

Spark 版本 > 2.0

  1. 是否可以监控 Spark 作业的执行内存?通过监视,我的意思是至少查看已使用/可用,就像 SparkUI 的执行器选项卡中每个执行器的存储内存一样。是还是不是?

  2. 我可以用 SparkListeners (@JacekLaskowski 吗?) 历史服务器怎么样?还是唯一的方法是通过外部工具? Graphana,Ganglia,其他?如果是外部工具,您能否指出一个教程或提供一些更详细的指南?

  3. 我看到这个SPARK-9103 Tracking spark's memory usage 似乎还不能监控执行内存。这似乎也很相关SPARK-23206 Additional Memory Tuning Metrics

  4. Peak Execution memory 是否是任务中执行内存使用/占用的可靠估计?例如,如果 Stage UI 显示任务在峰值使用 1 Gb,而我每个执行程序有 5 个 cpu,这是否意味着我需要每个执行程序上至少 5 Gb 的执行内存才能完成一个阶段?

  5. 我们可以使用其他代理来了解执行内存吗?

  6. 有没有办法知道执行内存何时开始占用存储内存?当我的缓存表从 SparkUI 的“存储”选项卡中消失或仅保留一部分时,是否意味着它已被执行内存驱逐?

【问题讨论】:

  • 如果你在 web UI 中看到它,你可以在 SparkListeners 中看到它(因为 web UI 是一堆 SparkListeners)。我将不得不刷新我的记忆,以非常准确的语言回答这个问题。感谢您的提问!
  • @JacekLaskowski 我在 SparkUI 中看不到它。我认为 SparkListeners 中可用的东西比 SparkUI 中的要多。感谢您的光临。

标签: apache-spark memory memory-management unified-memory


【解决方案1】:

回答我自己的问题以供将来参考:

我们使用 Mesos 作为集群管理器。在 Mesos UI 中,我找到了一个页面,其中列出了给定工作人员的所有执行程序,并且可以找到执行程序的内存使用情况。这似乎是总内存使用存储+执行。我可以清楚地看到,当内存填满时,执行者就会死亡。

访问:

  • 转到列出所有集群工作人员的“代理”选项卡
  • 选择工人
  • 选择框架 - 以您的脚本名称命名的框架
  • 在里面,您将有一个在这个特定工作人员上运行的作业的执行者列表。
  • 有关内存使用情况,请参阅:Mem(已使用/已分配)

驱动程序也可以这样做。对于框架,您选择名称为Spark Cluster的框架

如果您想知道如何以编程方式提取此数字,请参阅我对这个问题的回复:How to get Mesos Agents Framework Executor Memory

【讨论】:

  • Spark2.x 有什么办法可以利用内存。如果我们不想依赖 RM。
【解决方案2】:

我为执行程序启用了 Spark 内部指标,我可以获得有关 JVMHeapMemory、jvm.heap.usage、OnHeapExecutionMemory、OnHeapStroageMemory 和 OnHeapUnifiedMemory 的信息以供我研究。请参阅文档 (https://spark.apache.org/docs/3.0.0-preview/monitoring.html) 了解更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-18
    • 1970-01-01
    相关资源
    最近更新 更多