Error: java.lang.ClassNotFoundException: org.apache.hadoop.hbase.HBaseConfiguration compiling using javac

Error: java.lang.ClassNotFoundException: org.apache.hadoop.hbase.HBaseConfiguration compiling using javac

我是 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 个错误——所以我猜这个库运行良好)。

我坚持这个问题大约 2 周 :( 并且找不到任何可行的解决方案。我尝试了很多我发现的建议,例如修复环境变量,在 hbase-env.sh 中添加一些行等. 这是我收藏的一些(但没有解决我的问题)。

非常感谢您的帮助,

太空人

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

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

至于我,我只是运行:

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

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

后,它已修复
<dependency org="org.apache.hbase" name="hbase-common" rev="0.98.8-hadoop2" conf="*->default" />

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