我正在寻找一种方法来监测Yarn容器的内存使用时间。
具体来说,给定一个应用程序id,如何获得一个图形,显示每个容器随时间的内存使用情况?
其主要目标是更好地满足我们的yarn应用程序的内存分配需求(spark/map reduce),以避免过度分配和集群资源浪费。另外一个目标是在开发作业和尝试选择合理的资源分配时调试内存问题的能力。
我们已经尝试使用数据狗集成,但它没有按容器分解度量。
另一种方法是解析 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
正确地分析日志可以产生数据,这些数据可以用来绘制内存使用率随时间变化的曲线图。
这正是我们想要的,但有两个缺点:
它包括读取人类可读的日志行并将它们解析为数字数据。我们很想避免这种情况。
如果这些数据可以被其他方式使用,我们希望它能提供更多我们将来可能感兴趣的信息。我们不想把时间花在解析日志上,只是为了意识到我们需要别的东西。
有没有其他方法来提取这些指标,要么插入现有的生产者,要么编写一个简单的监听器?
也许是另一种方法?
暂无答案!
目前还没有任何答案,快来回答吧!