我知道这是一个要求很高的话题。尽管如此,在我深入研究了我能找到的所有主题(其中大多数都在谈论CLASSPATH)之后,我还是无法解决我的问题。
我发现并尝试过的主题示例:
线程中的异常";主";java.lang.NoClassDefFoundError:org/apache/hoop/hbase/HBaseConfiguration
java.lang.NoClassDefFoundError与HBase扫描
我在Ubuntu 14.04 上使用Hadoop 2.5.1和HBase 0.98.11
我设置了伪分布式模式,并成功地使用hbase运行了hadoop。在我想设置完全分布式模式后,作业失败,出现NoClassDefFound错误。我尝试将"export HADOOP_CLASSPATH=/usr/local/hbase-0.98.11-hadoop2/bin/hbase classpath
"添加到HADOOP-env(也是yarn env)中,但仍然不起作用。
我发现的一个通知是,如果我评论
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
我可以成功地运行作业。但我似乎是在单节点而不是多节点上运行它。
以下是一些配置:
地图站点
<property>
<name>mapred.job.tracker</name>
<value>hadoop1:54311</value>
<description>The host and port that the MapReduce job tracker runs
at. If "local", then jobs are run in-process as a single map
and reduce task.
</description>
</property>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>`
hdfs站点
<property>
<name>dfs.replication</name>
<value>2</value>
<description>Default block replication.
The actual number of replications can be specified when the file is created.
The default is used if replication is not specified in create time.
</description>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop_store/hdfs/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop_store/hdfs/datanode</value>
</property>
<property>
<name>dfs.datanode.use.datanode.hostname</name>
<value>false</value>
</property>
<property>
<name>dfs.namenode.datanode.registration.ip-hostname-check</name>
<value>false</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
纱线位置
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
<description>shuffle service that needs to be set for Map Reduce to run
</description>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
在yarn env和hadoop env中,除了hadoop_CLASSPATH(即使我添加或不添加它也不会改变。)
以下是错误跟踪:
2015-04-25 23:29:25143 FATAL[main]org.apache.hadoop.mapred.YarnChild:运行子级时出错:java.lang.NoClassDefFoundError:org/apache/hoop/hbase/HBaseConfiguration在apriori2$FrequentItemsReduce.reduce(aprior2.java:550)在apriori2$FrequentItemsReduce.reduce(aprior2.java:532)网址:org.apache.hadop.mapreduce.Reporter.run(Reducer.java:171)网址:org.apache.hadop.mapred.Task$NewCombinaterRunner.combine(Task.java:1651)网址:org.apache.hadop.mapred.MapTask$MapOutputBuffer.sortAndSpill(MapTask.java:1611)网址:org.apache.hadop.mapred.MapTask$MapOutputBuffer.flash(MapTask.java:1462)网址:org.apache.hadop.mapred.MapTask$NewOutputCollector.close(MapTask.java:700)网址:org.apache.hadop.mapred.MapTask.closeQuietly(MapTask.java:1990)网址:org.apache.hadop.mapred.MapTask.runNewMapper(MapTask.java:774)网址:org.apache.hadop.mapred.MapTask.run(MapTask.java:340)网址:org.apache.hadop.mapred.YarnChild$2.run(YarnChild.java:168)位于java.security.AccessController.doPrivileged(本机方法)位于javax.security.auth.Subject.doAs(Subject.java:415)网址:org.apache.hadop.security.UserGroupInformation.doAs(UserGroupInformation.java:1614)网址:org.apache.hadop.mapred.YarnChild.main(YarnChild.java:163)
非常感谢您的帮助,先生。
使用Yarn,您需要使用MapReduce作业的类路径设置">Yarn.application.classpath"属性。"export HADOOP_CLASSPATH"不适用于Yarn。