首页 文章

Spark执行内存监控

提问于
浏览
2

我想要的是能够监控Spark execution memory 而不是SparkUI中可用的 storage memory . 我的意思是,执行内存 NOT executor memory .

通过执行内存我的意思是:

此区域用于在执行混洗,连接,排序和聚合时缓冲中间数据 . 该区域的大小通过spark.shuffle.memoryFraction(default0.2)配置 . 根据:Spark 1.6中的统一内存管理

经过深入搜索答案后,我发现没有任何问题,只有未解决的StackOverflow问题,仅与存储内存相关的答案或者使用Ganglia类型的模糊答案,使用Cloudera控制台等...

Stack Overflow上似乎需要这些信息,但是没有一个令人满意的答案可用 . 以下是搜索监控火花记忆时StackOverflow的一些重要帖子

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?

Questions

Spark版本> 2.0

  • 是否可以监控Spark作业的 Execution memory ?通过监视,我的意思是至少看到使用/可用,就像SparkUI的Executor选项卡中每个 Actuator 的存储内存一样 . 是还是不是?

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

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

  • Peak Execution memory 是否可靠估计任务中执行内存的使用/占用?例如,如果一个Stage UI说某个任务在峰值时使用1 Gb,并且每个 Actuator 有5个cpu,这是否意味着每个 Actuator 需要至少5 Gb执行内存来完成一个阶段?

  • 我们可以用一些其他代理来瞥一眼执行内存吗?

  • 有没有办法知道执行内存何时开始进入存储内存?当我的缓存表从SparkUI的“存储”选项卡中消失或者只剩下其中的一部分时,它是否意味着它被执行内存驱逐了?

1 回答

  • 0

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

    我们使用Mesos作为集群管理器 . 在Mesos UI中,我找到了一个页面,列出了给定worker上的所有执行程序,并且可以找到执行程序的Memory使用情况 . 它似乎是一个总内存使用量存储执行 . 我可以清楚地看到,当记忆填满时,遗嘱执行人死亡 .

    要访问:

    • 转到“代理”选项卡,其中列出了所有群集工作者

    • 选择 Worker

    • 选择框架 - 具有脚本名称的框架

    • 在内部,您将获得在此特定工作人员上运行的作业的执行程序列表 .

    • 有关内存使用情况,请参阅:Mem(已使用/已分配)

    可以为驾驶员做类似的事情 . 对于框架,您可以选择名称为 Spark Cluster 的框架

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

相关问题