纱线虚拟内存使用情况

时间:2014-06-16 12:26:37

标签: hadoop oozie yarn

我正在运行一个包含运行此脚本的shell操作的oozie工作流。

java -classpath my.jar my.package.Main

shell动作配置如下所示

<action name="run-test-script">
  <shell xmlns="uri:oozie:shell-action:0.1">
    <job-tracker>${jobTracker}</job-tracker>
    <name-node>${nameNode}</name-node>
    <exec>run.sh</exec>
    <file>${wf:conf("oozie.wf.application.path")}/run.sh</file>
  </shell>
  <ok to="end"/>
  <error to="report_failure"/>
</action>

在Yarn(Cloudera Mgr GUI)中,我有以下设置

mapreduce.map.memory.mb=4GiB

当我运行它时,它失败了并且在Yarn中我收到以下错误消息:

Container [pid = 8340,containerID = container_1397556756420_5519_01_000002]正在超出虚拟内存限制。当前用法:使用327.6 MB的4 GB物理内存;使用33.2 GB的8.4 GB虚拟内存。杀死容器。 container_1397556756420_5519_01_000002的进程树转储:| - PID PPID PGRPID SESSID CMD_NAME USER_MODE_TIME(MILLIS)SYSTEM_TIME(MILLIS)VMEM_USAGE(BYTES)RSSMEM_USAGE(PAGES)FULL_CMD_LINE | - 8467 8466 8340 8340(java)21 2 34039132160 15889 java -classpath my -jar.jar my.package.Main | - 8466 8340 8340 8340(run.sh)0 0 108654592 304 / bin / bash ./run.sh | - 8340 31401 8340 8340(java)396 21 1476808704 67682 / usr / lib / jvm / default-java / bin / java -Djava.net.preferIPv4Stack = true -Dhadoop.metrics.log.level = WARN -Xmx825955249 -Djava.io.tmpdir = / data24 / yarn / nm / usercache / thomas.larsson / appcache / application_1397556756420_5519 / container_1397556756420_5519_01_000002 / tmp -Dlog4j.configuration = container-log4j.properties -Dyarn.app.mapreduce.container.log.dir = / var / log / hadoop-yarn / container / application_1397556756420_5519 / container_1397556756420_5519_01_000002 -Dyarn.app.mapreduce .container.log.filesize = 0 -Dhadoop.root.logger = INFO,CLA org.apache.hadoop.mapred.YarnChild 10.4.4.108 52668 attempt_1 397556756420_5519_m_000000_0 2根据要求杀死容器。退出代码是143

我的问题是,为什么这个任务试图分配33.2 Gb的虚拟内存?

更新:对不起,我忘了发布java类......

public class Main {
  public static void main(String[] args) throws InterruptedException {
    System.out.println("Running Main.");
    Thread.sleep(1000*60);
    System.out.println("Completed.");
  }
}

2 个答案:

答案 0 :(得分:1)

您正在查看的地图mb大小无关紧要,因为您没有启动地图/缩小 检查所有与内存相关的YARN设置,可能是您对容器的最小分配太高

答案 1 :(得分:0)

它失败了,因为你必须启用vmem检查。并且它超过了虚拟内存限制。

当前用法:使用327.6 MB的4 GB物理内存; 33.2 GB的8.4 GB