我想要的是能够监控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 回答
回答我自己的问题以备将来参考:
我们使用Mesos作为集群管理器 . 在Mesos UI中,我找到了一个页面,列出了给定worker上的所有执行程序,并且可以找到执行程序的Memory使用情况 . 它似乎是一个总内存使用量存储执行 . 我可以清楚地看到,当记忆填满时,遗嘱执行人死亡 .
要访问:
转到“代理”选项卡,其中列出了所有群集工作者
选择 Worker
选择框架 - 具有脚本名称的框架
在内部,您将获得在此特定工作人员上运行的作业的执行程序列表 .
有关内存使用情况,请参阅:Mem(已使用/已分配)
可以为驾驶员做类似的事情 . 对于框架,您可以选择名称为
Spark Cluster
的框架如果您想知道如何以编程方式提取此数字,请参阅我对此问题的回答:How to get Mesos Agents Framework Executor Memory