如何在Hadoop中检查Map Task的内存占用量

kee*_*kee 2 hadoop jvm mapreduce

我知道我可以通过设置JVM参数来控制map(或reduce)任务的最大内存.但我想知道是否有办法查看任务的当前内存使用情况?

Tej*_*til 6

启用远程HPROF分析.HPROF是JDK附带的分析工具,虽然是基本的,但它可以提供有关程序的CPU和堆使用情况的有价值信息.要使用它,您可以在代码中尝试:

conf.setBoolean("mapred.task.profile", true);
conf.set("mapred.task.profile.params", "-agentlib:hprof=cpu=samples," +
    "heap=sites,depth=6,force=n,thread=y,verbose=n,file=%s");
conf.set("mapred.task.profile.maps", "0-2");
conf.set("mapred.task.profile.reduces", ""); // no reduces
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅"Hadoop定义指南",第5章 - >"调整作业" - >"分析任务".