Search code examples
exceptionmapreducehbasehadoop2

Running Hbase mapreduce job gives HBaseConfiguration NoClassDefFoundError exception


I have set the variable in ~/.bashrc

export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/usr/lcoal/Hbase/lib/hbase-client-1.2.4.jar

but when i compile the code

java -cp $HADOOP_CLASSPATH:/home/hadoopuser/Downloads/myjar.jar com.bigdata.uniquecoder.WordCountClass

It still gives me this error.

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/HBaseConfiguration
at com.bigdata.uniquecoder.WordCountClass.main(WordCountClass.java:57)

Caused by:java.lang.ClassNotFoundException:org.apache.hadoop.hbase.HBaseConfiguration at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 1 more

NOTE: It works fine when i run it in eclipse but when running on top of hadoop gives this error. Any help will be highly appreciated.


Solution

  • Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/HBaseConfiguration
    

    The missing class will be present in hbase-common-x.y.z.jar

    Update the $HADOOP_CLASSPATH with

    export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/usr/local/Hbase/lib/hbase-common-1.2.4.jar
    

    Or,

    export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/usr/local/Hbase/lib/
    

    this will load all the jars under $HBASE_HOME/lib

    Make sure $HADOOP_CLASSPATH contains necessary HADOOP libraries. Else, use the below export command in ~/.bashrc

    export HADOOP_CLASSPATH=$HADOOP_HOME/share/hadoop/common/:$HADOOP_H‌​OME/share/hadoop/com‌​mon/lib/:$HADOOP_HOM‌​E/share/hadoop/hdfs/‌​:$HADOOP_HOME/share/‌​hadoop/hdfs/lib/:$HA‌​DOOP_HOME/share/hado‌​op/yarn/:$HADOOP_HOM‌​E/share/hadoop/yarn/‌​lib/:/usr/local/Hbase/lib/:$CLASSPATH