Hi All, I’m currently running Hadoop 2.7.2 on my three node cluster, all node equiped with 32-core CPU and 64 GB memory, Ubuntu 14.04.3 LTS. Yarn’s configuration kept the same with default one, except yarn.nodemanager.resource.memory-mb set as 16384(16G).
Everything worked fine, but when I try to run Map/Reduce task with JVM options mapreduce.map.java.opts=-XX:+PrintGCDetails, the task failed, with error message said that container is running beyond virtual memory limits. Current usage: 212.0 MB of 1 GB physical memory used; 17.9 GB of 2.1 GB virtual memory used. Killing container. Actually I was just running the Map/Reduce expample pi with tiny calculation, hadoop jar hadoop-mapreduce-examples-2.7.2.jar pi -D mapreduce.map.java.opts=-XX:+PrintGCDetails 5 100. I’ve tried to disable yarn.nodemanager.vmem-check-enabled, but as calculation increasees, error happens again. I am really confused why huge virtual memory allcated when JVM option -XX:+PrintGCDetails was added. Please help! Thank You, JR Error Message 16/04/29 09:43:47 INFO mapreduce.Job: Task Id : attempt_1461846504106_0012_m_000004_1, Status : FAILED Container [pid=16629,containerID=container_1461846504106_0012_01_000010] is running beyond virtual memory limits. Current usage: 212.0 MB of 1 GB physical memory used; 17.9 GB of 2.1 GB virtual memory used. Killing container. Dump of the process-tree for container_1461846504106_0012_01_000010 : |- PID PPID PGRPID SESSID CMD_NAME USER_MODE_TIME(MILLIS) SYSTEM_TIME(MILLIS) VMEM_USAGE(BYTES) RSSMEM_USAGE(PAGES) FULL_CMD_LINE |- 16629 16627 16629 16629 (bash) 0 0 17051648 667 /bin/bash -c /usr/lib/jvm/jdk8/bin/java -Djava.net.preferIPv4Stack=true -Dhadoop.metrics.log.level=WARN -XX:+PrintGCDetails -Djava.io.tmpdir=/opt/hadoop-2.7.2/tmp/nodemanager/local/usercache/hadoop/appcache/application_1461846504106_0012/container_1461846504106_0012_01_000010/tmp -Dlog4j.configuration=container-log4j.properties -Dyarn.app.container.log.dir=/opt/hadoop-2.7.2/tmp/nodemanager/logs/application_1461846504106_0012/container_1461846504106_0012_01_000010 -Dyarn.app.container.log.filesize=0 -Dhadoop.root.logger=INFO,CLA -Dhadoop.root.logfile=syslog org.apache.hadoop.mapred.YarnChild 10.13.71.82 56755 attempt_1461846504106_0012_m_000004_1 10 1>/opt/hadoop-2.7.2/tmp/nodemanager/logs/application_1461846504106_0012/container_1461846504106_0012_01_000010/stdout 2>/opt/hadoop-2.7.2/tmp/nodemanager/logs/application_1461846504106_0012/container_1461846504106_0012_01_000010/stderr |- 16633 16629 16629 16629 (java) 399 25 19239059456 53616 /usr/lib/jvm/jdk8/bin/java -Djava.net.preferIPv4Stack=true -Dhadoop.metrics.log.level=WARN -XX:+PrintGCDetails -Djava.io.tmpdir=/opt/hadoop-2.7.2/tmp/nodemanager/local/usercache/hadoop/appcache/application_1461846504106_0012/container_1461846504106_0012_01_000010/tmp -Dlog4j.configuration=container-log4j.properties -Dyarn.app.container.log.dir=/opt/hadoop-2.7.2/tmp/nodemanager/logs/application_1461846504106_0012/container_1461846504106_0012_01_000010 -Dyarn.app.container.log.filesize=0 -Dhadoop.root.logger=INFO,CLA -Dhadoop.root.logfile=syslog org.apache.hadoop.mapred.YarnChild 10.13.71.82 56755 attempt_1461846504106_0012_m_000004_1 10 yarn-site.xml <configuration><!-- Site specific YARN configuration properties --> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>namenode:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>namenode:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>namenode:8031</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>namenode:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>namenode:8088</value> </property> <property> <name>yarn.nodemanager.local-dirs</name> <value>${hadoop.tmp.dir}/nodemanager/local</value> </property> <property> <name>yarn.nodemanager.log-dirs</name> <value>${hadoop.tmp.dir}/nodemanager/logs</value> </property> <property> <name>yarn.nodemanager.log.retain-seconds</name> <value>10800</value> </property> <property> <!-- Where to aggregate logs to. --> <name>yarn.nodemanager.remote-app-log-dir</name> <value>${hadoop.tmp.dir}/nodemanager/remote</value> </property> <property> <name>yarn.nodemanager.remote-app-log-dir-suffix</name> <value>logs</value> </property> <property> <!-- enable log aggregation --> <name>yarn.log-aggregation-enable</name> <value>true</value> </property> <property> <!-- How long to keep aggregation logs before deleting them. -1 disables. --> <name>yarn.log-aggregation.retain-seconds</name> <!-- 30 days --> <value>2592000</value> </property> <property> <!-- How long to wait between aggregated log retention checks. If set to 0 or a negative value then the value is computed as one-tenth of the aggregated log retention time. --> <name>yarn.log-aggregation.retain-check-interval-seconds</name> <value>-1</value> </property> <property> <name>yarn.nodemanager.resource.memory-mb</name> <value>16384</value> </property> <property> <name>yarn.nodemanager.vmem-check-enabled</name> <value>true</value> </property></configuration>