如何监控每个容器的 YARN 应用程序内存?

sum*_*ulb 5 monitoring hadoop hadoop-yarn apache-spark

我正在寻找一种方法来监视 YARN 容器随时间的内存使用情况。

具体来说 - 给定一个 YARN 应用程序 ID,你如何获得一个图表,显示每个容器随时间的内存使用情况?

主要目标是更好地满足我们的 YARN 应用程序(Spark / Map-Reduce)的内存分配要求,以避免过度分配和集群资源浪费。一个附带目标是在开发我们的作业并尝试选择合理的资源分配时调试内存问题的能力。

我们已经尝试使用Data-Dog 集成,但它没有按容器分解指标。

另一种方法是解析hadoop-yarn日志。这些日志包含以下消息:

Memory usage of ProcessTree 57251 for container-id container_e116_1495951495692_35134_01_000001: 1.9 GB of 11 GB physical memory used; 14.4 GB of 23.1 GB virtual memory used
Run Code Online (Sandbox Code Playgroud)

正确解析日志可以产生可用于绘制内存使用情况随时间变化的图表的数据。

这正是我们想要的,但有两个缺点:

  1. 它涉及读取人类可读的日志行并将它们解析为数字数据。我们很想避免这种情况。
  2. 如果可以以其他方式使用这些数据,我们希望它会有更多我们将来可能感兴趣的信息。我们不想花时间解析日志只是为了意识到我们需要别的东西。

有没有其他方法可以提取这些指标,通过插入现有的生产者或编写一个简单的侦听器?

也许是另一种方法?