【问题标题】:YARN: Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMasterYARN:无法找到或加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster
【发布时间】:2017-06-25 23:10:11
【问题描述】:

尝试在 Fedora 上执行任何 M/R2 作业时出现此异常。 Hadoop 2.7.3 和 2.8.0 有同样的问题。这包括 Hive。

[hadoop@master hadoop]$ yarn classpath
/opt/hadoop/hadoop-2.7.3/conf
/opt/hadoop/hadoop-2.7.3/conf
/opt/hadoop/hadoop-2.7.3/conf:/opt/hadoop/hadoop/share/hadoop/common/lib/*
/opt/hadoop/hadoop/share/hadoop/common/*
/opt/hadoop/hadoop/share/hadoop/hdfs
/opt/hadoop/hadoop/share/hadoop/hdfs/lib/*
/opt/hadoop/hadoop/share/hadoop/hdfs/*
/opt/hadoop/hadoop/share/hadoop/yarn/lib/*
/opt/hadoop/hadoop/share/hadoop/yarn/*
/opt/hadoop/hadoop/share/hadoop/mapreduce/share/hadoop/mapreduce/*
/opt/hadoop/hadoop/contrib/capacity-scheduler/*.jar
/opt/hadoop/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-client-app-2.7.3.jar
/opt/hadoop/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-client-common-2.7.3.jar
/opt/hadoop/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.7.3.jar
/opt/hadoop/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-client-hs-2.7.3.jar
/opt/hadoop/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-client-hs-plugins-2.7.3.jar
/opt/hadoop/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.7.3.jar
/opt/hadoop/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-2.7.3-tests.jar
/opt/hadoop/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-client-shuffle-2.7.3.jar
/opt/hadoop/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar
/opt/hadoop/hadoop/share/hadoop/yarn/*
/opt/hadoop/hadoop/share/hadoop/yarn/lib/*

mapred-site.xml

<configuration>

<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>

<property> 
    <name>mapreduce.application.classpath</name>
    <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*,$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
</property>

</configuration>

还有yarn-site.xml

<configuration>

<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>

<property>
    <name>yarn.application.classpath</name>
    <value>$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/*,$HADOOP_MAPRED_HOME/share/hadoop/mapreduce/lib/*</value>
</property>

</configuration>

最后但同样重要的是,环境设置:

export HADOOP_HOME=/opt/hadoop/hadoop
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

我很确定我遗漏了一些明显的东西。我已经设置了很多次,但肯定有什么问题。

缺少的类实际上是类路径中 jar 的一部分。 /opt/hadoop/hadoop 文件夹归用户 hadoop 所有,并拥有所需的所有访问权限。

【问题讨论】:

  • 提及主要错误,并尽可能附上日志,以便更好地理解问题。
  • 请您尝试设置YARN_HOME=$HADOOP_HOME而不是HADOOP_YARN_HOME=$HADOOP_HOME

标签: hadoop hive hdfs classpath hadoop-yarn


【解决方案1】:

我遇到了同样的问题(JAVA -1.8 291u,Hadoop -2.8.0),在 yarn-site.xml 中设置属性 - YARN 应用程序类路径后解决了这个问题。

第一步:执行“hadoop classpath”。

此命令显示要在 yarn-site.xml 中作为值传递的路径列表

第二步:编辑yarn-site.xml如下:

 <property>
    <name>yarn.application.classpath</name>
    <value>output from step1 </value>
 </property>

在触发 mapreduce 作业之前重新启动 yarn 脚本。

【讨论】:

    【解决方案2】:

    设置YARN_HOME=$HADOOP_HOME 而不是HADOOP_YARN_HOME=$HADOOP_HOME

    【讨论】:

      猜你喜欢
      • 2018-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-05
      • 2015-02-06
      相关资源
      最近更新 更多