从window中的eclipse中提交jar包到yarn框架运行,出现Exception from container-launch: org.apache.hadoop.util.Shell$ExitCodeException
原因一:是jar包classpath的问题,把所有需要的hadoop jar包全部加入yarn-site.xml 中的到'yarn.application.classpath' 里面。代码如下:(确保你已经设定了HADOOP_HOME这个环境变量) <property> <name>yarn.application.classpath</name> <value> %HADOOP_HOME%\etc\hadoop, %HADOOP_HOME%\share\hadoop\common\*, %HADOOP_HOME%\share\hadoop\common\lib\*, %HADOOP_HOME%\share\hadoop\hdfs\*, %HADOOP_HOME%\share\hadoop\hdfs\lib\*, %HADOOP_HOME%\share\hadoop\mapreduce\*, %HADOOP_HOME%\share\hadoop\mapreduce\lib\*, %HADOOP_HOME%\share\hadoop\yarn\*, %HADOOP_HOME%\share\hadoop\yarn\lib\* </value></property>
注意:如果yarn框架是装在linux系统中,环境变量的引用的用$HADOOP_HOME,路径分割符得用/,例如:$HADOOP_HOME/share/hadoop/common/*
原因二:执行AppMaster的命令行格式不对也可能导致这个异常。
原因三:container运行的程序出现异常,比如找不到类库等,从nodemanager的日志信息中会显示这个异常,这种情况需要查看container日志信息
注意:在container启动时需要设置好container运行的环境变量 "CLASSPATH",不然容易出现找不到类库等错误,同一台机器上的container的CLASSPATH环境变量需要一致,不然就会出现这个container能够运行,二另一个container不能运行的情况。