Archives of Support Questions (Read Only)

This is an archived board for historical reference. Information and links may no longer be available or relevant
Announcements
This board is archived and read-only for historical reference. To ask a new question, please post a new topic on the appropriate active board.

java.lang.NoClassDefFoundError using Hbase Storage Handler on Hive

avatar
Explorer

Hi,

 

i want to create an external hive tebale mapped on hbase in my oozie workflow. on cdh4 it works without problems but using the script on cdh5 i got an "java.lang.NoClassDefFoundError" exception. I have added all jars like in the documentation:

 

http://www.cloudera.com/content/cloudera-content/cloudera-docs/CDH5/latest/CDH5-Installation-Guide/c...

 

I also added the jars with the "hive.aux.jars.path" property at the hive-site.xml

 

Hive script:

 

CREATE EXTERNAL TABLE IF NOT EXISTS hive_table(
 hash BIGINT,
 f1 STRING
 )STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES (
 'hbase.columns.mapping' =':key,cf1:f1')TBLPROPERTIES('hbase.table.name' = 'hbase_table');

 

Error:

 

3029 [main] ERROR hive.ql.exec.DDLTask  - java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/mapreduce/TableInputFormatBase
  at java.lang.ClassLoader.defineClass1(Native Method)
  at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
  at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
  at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
  at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
  at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
  at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
  at java.security.AccessController.doPrivileged(Native Method)
  at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:412)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:412)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:412)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:412)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:412)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:412)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:412)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:412)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
  at java.lang.Class.forName0(Native Method)
  at java.lang.Class.forName(Class.java:270)
  at org.apache.hadoop.hive.ql.metadata.Table.getInputFormatClass(Table.java:305)
  at org.apache.hadoop.hive.ql.metadata.Table.<init>(Table.java:98)
  at org.apache.hadoop.hive.ql.metadata.Hive.getTable(Hive.java:991)
  at org.apache.hadoop.hive.ql.metadata.Hive.getTable(Hive.java:894)
  at org.apache.hadoop.hive.ql.exec.DDLTask.dropTable(DDLTask.java:3308)
  at org.apache.hadoop.hive.ql.exec.DDLTask.execute(DDLTask.java:278)
  at org.apache.hadoop.hive.ql.exec.Task.executeTask(Task.java:151)
  at org.apache.hadoop.hive.ql.exec.TaskRunner.runSequential(TaskRunner.java:65)
  at org.apache.hadoop.hive.ql.Driver.launchTask(Driver.java:1485)
  at org.apache.hadoop.hive.ql.Driver.execute(Driver.java:1263)
  at org.apache.hadoop.hive.ql.Driver.runInternal(Driver.java:1091)
  at org.apache.hadoop.hive.ql.Driver.run(Driver.java:931)
  at org.apache.hadoop.hive.ql.Driver.run(Driver.java:921)
  at org.apache.hadoop.hive.cli.CliDriver.processLocalCmd(CliDriver.java:268)
  at org.apache.hadoop.hive.cli.CliDriver.processCmd(CliDriver.java:220)
  at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:422)
  at org.apache.hadoop.hive.cli.CliDriver.processLine(CliDriver.java:357)
  at org.apache.hadoop.hive.cli.CliDriver.processReader(CliDriver.java:455)
  at org.apache.hadoop.hive.cli.CliDriver.processFile(CliDriver.java:465)
  at org.apache.hadoop.hive.cli.CliDriver.executeDriver(CliDriver.java:746)
  at org.apache.hadoop.hive.cli.CliDriver.run(CliDriver.java:684)
  at org.apache.hadoop.hive.cli.CliDriver.main(CliDriver.java:623)
  at org.apache.oozie.action.hadoop.HiveMain.runHive(HiveMain.java:315)
  at org.apache.oozie.action.hadoop.HiveMain.run(HiveMain.java:276)
  at org.apache.oozie.action.hadoop.LauncherMain.run(LauncherMain.java:38)
  at org.apache.oozie.action.hadoop.HiveMain.main(HiveMain.java:66)
  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  at java.lang.reflect.Method.invoke(Method.java:606)
  at org.apache.oozie.action.hadoop.LauncherMapper.map(LauncherMapper.java:226)
  at org.apache.hadoop.mapred.MapRunner.run(MapRunner.java:54)
  at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:430)
  at org.apache.hadoop.mapred.MapTask.run(MapTask.java:342)
  at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:168)
  at java.security.AccessController.doPrivileged(Native Method)
  at javax.security.auth.Subject.doAs(Subject.java:415)
  at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1548)
  at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:163)
  Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.hbase.mapreduce.TableInputFormatBase
  at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
  at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
  at java.security.AccessController.doPrivileged(Native Method)
  at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
  at java.lang.ClassLoader.loadClass(ClassLoader.java:358)
  ... 60 more

 


My Cluster is configured with CDH5.0.2 and CDM5 with Yarn MRv2

 

 

I hope you can help me which jar file is missing

1 ACCEPTED SOLUTION

avatar
New Contributor

I was able to fix this issue by copying the following jars located at /opt/cloudera/parcels/CDH/lib/hive/lib to  /user/oozie/share/lib/lib_{ts}/hive/

 

hbase-client.jar
hbase-common.jar
hbase-hadoop2-compat.jar
hbase-hadoop-compat.jar
hbase-protocol.jar
hbase-server.jar
hive-hbase-handler-0.12.0-cdh5.1.3.jar
hive-hbase-handler.jar

htrace-core.jar

 

I'm using Hadoop 2.3.0-cdh5.1.3 and CDH manager 5.

- Saimon

View solution in original post

3 REPLIES 3

avatar
Explorer

Has anyone an idea what library is missing?

 

It would be great if someone could help me briefly?

thanks a lot 🙂

 

BG,

avatar
New Contributor

I'm having the same problem. Did you find a fix?

avatar
New Contributor

I was able to fix this issue by copying the following jars located at /opt/cloudera/parcels/CDH/lib/hive/lib to  /user/oozie/share/lib/lib_{ts}/hive/

 

hbase-client.jar
hbase-common.jar
hbase-hadoop2-compat.jar
hbase-hadoop-compat.jar
hbase-protocol.jar
hbase-server.jar
hive-hbase-handler-0.12.0-cdh5.1.3.jar
hive-hbase-handler.jar

htrace-core.jar

 

I'm using Hadoop 2.3.0-cdh5.1.3 and CDH manager 5.

- Saimon