首页 > 解决方案 > 如何获取 Spark Executor 使用的内存

问题描述

我试图了解我们的内存配置是否正常,或者我们是否在 Executor 中过度分配了资源,但我无法弄清楚如何获取内存使用情况。请注意,我在通过 Spark REST API 获取信息方面存在限制。

如果我提取执行程序的详细信息(使用 http://host:4072/api/v1/applications/app-20201109081013-5073/allexecutors),我可以看到的是(请注意,为了清楚起见,我删除了一些数据):

{
  "id" : "0",
  "hostPort" : "",
  "isActive" : true,
  "memoryUsed" : 50515998177,
  "diskUsed" : 0,
  "maxMemory" : 10119177830,
  "addTime" : "2020-11-09T08:10:15.933GMT",
  "memoryMetrics" : {
    "usedOnHeapStorageMemory" : 50515998177,
    "usedOffHeapStorageMemory" : 0,
    "totalOnHeapStorageMemory" : 10119177830,
    "totalOffHeapStorageMemory" : 0
  }

我可以理解maxMemory这基本上是分配的内存(由于内存区域拆分,10GB 的 16GB)......但我对我可以看到的 50GB 感到困惑memoryUsed。这似乎是自启动以来使用的存储内存的总和,因为它一直在增长......相同的信息显示在 Spark UI 的 Executors 选项卡中。

在 Executor 选项卡中显示到 UI 中的相同信息

所以问题是:有一种方法可以获得当前使用的存储内存,最后但并非最不重要的一点是,对于执行内存也是如此?

非常感谢

标签: apache-spark

解决方案


推荐阅读