Spark执行内存监控

19
我想要的是能够监控Spark执行内存,而不是在SparkUI中可用的存储内存。我的意思是执行内存而不是执行器内存。
通过执行内存,我指的是:
这个区域用于在执行洗牌、连接、排序和聚合时缓冲中间数据。该区域的大小通过spark.shuffle.memoryFraction进行配置(默认值为0.2)。 根据:Spark 1.6中的统一内存管理 经过激烈的搜索,我找不到答案,只有未被回答的StackOverflow问题、仅涉及存储内存的答案或者模糊答案,例如“使用Ganglia”、“使用Cloudera console”等等……
在StackOverflow上搜索“monitoring spark memory”时,似乎有很多人需要这方面的信息,但没有一个令人满意的答案。以下是一些关于“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 - 监控实际使用的执行器内存

如何监视 Spark 应用程序的内存和 CPU 使用率?

如何获取 Spark 应用程序的内存和 CPU 使用情况?

问题

Spark 版本 > 2.0

  1. 是否可以监控Spark作业的执行内存?通过监控,我指的是至少像在SparkUI的Executor选项卡中对存储内存每个执行器使用/可用情况一样。是或否?

  2. 我能用SparkListeners (@JacekLaskowski ?)来实现吗?历史服务器呢?或者唯一的方法是通过外部工具?Graphana、Ganglia、其他?如果是外部工具,请指向教程或提供更详细的指导。

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

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

  5. 是否有其他代理可以用来窥视执行内存?

  6. 有没有办法知道执行内存何时开始侵占存储内存?当我的缓存表从SparkUI的Storage选项卡中消失或只剩下部分时,这是否意味着它被执行内存驱逐了?


1
如果您在Web UI中看到它,那么您可以在SparkListeners(因为Web UI是一组SparkListeners)中找到它。我需要刷新一下我的记忆才能用非常精确的话来回答这个问题。谢谢您的提问! - Jacek Laskowski
1
@JacekLaskowski 我在SparkUI中没有看到它。我认为在SparkListeners中有更多的内容可用。感谢您的光临。 - astro_asz
2个回答

4

为了方便以后的参考,我自己回答一下这个问题:

我们正在使用Mesos作为集群管理器。在Mesos UI中,我找到了一个页面,列出了给定工作节点上的所有执行程序,其中可以找到执行程序的内存使用情况。它似乎是存储和执行的总内存使用量。当内存填满时,执行程序会死机。

访问方法如下:

  • 转到代理标签,其中列出了所有集群工作节点
  • 选择工作节点
  • 选择框架 - 具有您脚本名称的那个框架
  • 在其中,您将拥有在此特定工作节点上运行的作业的执行程序列表。
  • 要查看内存使用情况,请参见:Mem(已使用/已分配)

对于驱动程序,也可以进行类似的操作。对于框架,您可以选择具有名称Spark Cluster的框架

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


有没有什么方法可以让Spark2.x使用内存,即使我们不想依赖于RM? - JSR29

0

我启用了Spark执行器的内部度量标准,并且可以获取有关JVMHeapMemory、jvm.heap.usage、OnHeapExecutionMemory、OnHeapStroageMemory和OnHeapUnifiedMemory的信息,以供我的研究使用。更多信息请参阅文档(https://spark.apache.org/docs/3.0.0-preview/monitoring.html)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接