yarn虚拟内存使用

ghhkc1vu  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(606)

我正在运行一个由运行此脚本的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中,我得到以下错误消息:
容器[pid=8340,containerid=container\u 1397556756420\u 5519\u 01\u000002]运行超出虚拟内存限制。当前使用量:使用327.6MB的4GB物理内存;使用了33.2 gb的8.4 gb虚拟内存。杀人容器。容器的进程树转储\u 1397556756420 \u 5519 \u 01 \u000002:|-pid ppid pgrpid sessid cmd \u name user \u mode \u time(millis)system \u time(millis)vmem \u usage(bytes)rssmem \u usage(pages)full \u cmd \u 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 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\u 1397556756420\u 5519/container\u 1397556756420\u 5519\u 01\u000002-dyarn.app.mapreduce.container.log.filesize=0-dhadoop.root.logger=info,cla org.apache.hadoop.mapred.yarnchild 10.4.4.108 52668尝试\u 1397556756420 \u 5519 \u m \u000000 \u 0 2请求杀死的容器。出口代码是143
我的问题是,为什么这个任务要分配33.2GB的虚拟内存?
更新:抱歉,我忘了发布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.");
  }
}
xqkwcwgp

xqkwcwgp1#

您正在查看的map mb大小是不相关的,因为您没有启动map/reduce检查所有与内存相关的设置,这可能是因为您对容器的最小分配太高

to94eoyn

to94eoyn2#

它失败了,因为你一定启用了vmem检查。它已经超过了虚拟内存的限制。
当前使用量:使用327.6MB的4GB物理内存;8.4 gb中的33.2 gb

相关问题