错误:java.lang.ClassNotFoundException:org.apache.hadoop.hbase.HBaseConfiguration使用javac进行编译

时间:2015-02-06 19:51:56

标签: java hadoop mapreduce hbase classnotfound

我是Hadoop和MapReduce的初学者。在我的Ubuntu VM上安装Hadoop之后,我尝试了一些像Wordcount和Anagram这样的初学者例子。

我想做Apriori on MapReduce。我在Sourceforge上找到了这个(http://sourceforge.net/p/apriorimapred/wiki/Home/)。

下载并安装了一些必需的组件,例如HBaseLog4j(虽然我在安装log4j时遇到问题,所以我选择通过将关卡设置为关闭来禁用它们),

我在努力解决这个问题

"Error: java.lang.ClassNotFoundException: org.apache.hadoop.hbase.HBaseConfiguration" -- as in the picture. (https://dl.dropboxusercontent.com/u/51053996/Pics/hadoop%20classnotfound.jpg)

每次我想运行jar文件时都会发生这种情况。 我采取的步骤是

1. javac -cp "$HADOOP_HOME/share/hadoop/mapreduce/hadoop-common-2.0.0-alpha.jar:$HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.0.2-alpha.jar:$HADOOP_HOME/lib/commons-configuration-1.10/*:/usr/local/apache-log4j-1.2.17/log4j-1.2.17.jar:/usr/lib/hbase/hbase-0.94.8/hbase-0.94.8.jar" apriori.java

2. jar -cvf apriori.jar -C . .

3. $HADOOP_HOME/bin/hadoop jar /home/hduser/yarn/hadoop-2.5.1/share/hadoop/mapreduce/apriori.jar apriori /in /out2 /out2c /out2a

(在步骤3中输入命令后出现问题) 我在第1步编译后没有显示错误(但是,我尝试编译时不包括"/usr/lib/hbase/hbase-0.94.8/hbase-0.94.8.jar"并且有大约100个错误 - 所以我猜这个lib工作得很好。)

我坚持这个问题大约2周:(并且找不到任何可行的解决方案。我已经尝试了许多建议,例如修复环境变量,在hbase-env.sh中添加一些行等等这里有一些我给他们加了书签(但没有解决我的问题)。

非常感谢你,非常感谢每一位帮助,

Spacez

4 个答案:

答案 0 :(得分:1)

我正在使用hbase-098.8-hadoop2和nutch 2.3.1(gora 0.6.1)并遇到同样的错误。我将以下行添加到$NUTCH_ROOT/ivy/ivy.xml后修复了它:

<dependency org="org.apache.hbase" name="hbase-common" rev="0.98.8-hadoop2" conf="*->default" />

这是官方Nutch 2教程中提到的gora错误。

答案 1 :(得分:0)

您可以尝试将hbase-{vsersion}.jar$HBASE_HOME复制到$HADOOP_HOME/lib

答案 2 :(得分:0)

我通过使用兼容版本重新安装Hadoop和HBase解决了这个问题(我使用的是Hadoop 2.5.1和HBase 0.98.11)。另外,在hadoop-env中添加Hadoop和Hbase jar的正确类路径。

答案 3 :(得分:0)

至于我,我只是跑了:

 export HADOOP_CLASSPATH=`~/hbase/bin/hbase classpath`
java  -cp "$HADOOP_CLASSPATH:target/<myjar>.jar" <path_to>.<myHBaseClass>