【问题标题】:how to get container cpu/memory usage in hadoop yarn如何在hadoop yarn中获取容器cpu/内存使用情况
【发布时间】:2014-11-28 14:54:42
【问题描述】:

我是hadoop/yarn新手,需要在任务执行过程中获取容器资源消耗。

当我在 apache hadoop 网站上查看文档时,它说“nodemanager ...负责容器,监控它们的资源使用情况(cpu、内存、磁盘、网络)并将其报告给资源管理器”。 我的理解是节点管理器会定期报告资源使用情况以及心跳。

当我查看源代码时。在 NodeStatusUpdaterImpl 中,totalResource 包含在 RegisterNodeManagerRequest 中。我认为它在初始化 nodemanager 并告诉 RM 配置的资源时调用。但是在NodeHeartbeatRequest中,nodestatus只有容器id,没有cpu内存等。

那么你能帮我澄清一下容器使用的cpu内存是否会报告给RM吗?我怎样才能得到这样的数据?

非常感谢!

【问题讨论】:

    标签: resources monitoring hadoop-yarn


    【解决方案1】:

    这是Container Monitor的实现:

    hadoop-2.6.0-src/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-server/hadoop-yarn-server-nodemanager/src/main/java/org/apache/hadoop/yarn/server/nodemanager/containermanager/monitor/ContainersMonitorImpl.java

    有一些方法可以检查容器是否超出限制,isProcessTreeOverLimit 将向您展示 yarn 如何获取某个容器(进程)的内存使用情况。我不确定是否有我们可以用来获取这些信息的 API。但是你可以看到这个文件

    hadoop-2.6.0-src/hadoop-yarn-project/hadoop-yarn/hadoop-yarn-common/src/main/java/org/apache/hadoop/yarn/util/ProcfsBasedProcessTree.java

    它向您展示了 Yarn 如何获取内存使用情况:跟踪/proc 中的进程文件。这个answer 会给你命令。我认为可以在没有 Yarn API 的情况下添加某些代码来获取内存使用情况(我希望它也有这些 API)。

    【讨论】:

      猜你喜欢
      • 2014-07-23
      • 2015-07-22
      • 2016-04-20
      • 1970-01-01
      • 1970-01-01
      • 2015-03-28
      • 2012-04-03
      • 1970-01-01
      • 2019-10-19
      相关资源
      最近更新 更多