简体   繁体   English

Hadoop 2.4:java.lang.NoClassDefFoundError:org / apache / hcatalog / mapreduce / InputJobInfo

[英]Hadoop 2.4: java.lang.NoClassDefFoundError: org/apache/hcatalog/mapreduce/InputJobInfo

I have upgraded to a recent Hadoop from Hortonworks: 我已经从Hortonworks升级到了最新的Hadoop:

Hadoop 2.4.0.2.1.2.1-471
Subversion git@github.com:hortonworks/hadoop.git -r 9e5db004df1a751e93aa89b42956c5325f3a4482
Compiled by jenkins on 2014-05-27T18:57Z
Compiled with protoc 2.5.0
From source with checksum 9e788148daa5dd7934eb468e57e037b5
This command was run using /usr/lib/hadoop/hadoop-common-2.4.0.2.1.2.1-471.jar

Before upgrading I wrote a Java MRD program that uses Hive tables both for input & output. 升级之前,我编写了一个Java MRD程序,该程序使用Hive表进行输入和输出。 In previous version of Hadoop it worked, notwithstanding I got deprecation warnings at compile time for this code: 在早期版本的Hadoop中,尽管我在编译时收到此代码的过时警告,但它仍然有效:

    Job job = new Job(conf, "Foo");
    HCatInputFormat.setInput(job,InputJobInfo.create(dbName, inputTableName, null));

Now, after updating dependencies to new jars in Hadoop 2.4.0.2.1.2.1-471 and runing the same code I get the following error: 现在,在将对Hadoop 2.4.0.2.1.2.1-471中的新jar的依赖关系更新并运行相同的代码之后,我得到以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/hcatalog/mapreduce/InputJobInfo
    at com.bigdata.hadoop.Foo.run(Foo.java:240)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:70)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:84)
    at com.bigdata.hadoop.Foo.main(Foo.java:272)
    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.hadoop.util.RunJar.main(RunJar.java:212)
Caused by: java.lang.ClassNotFoundException: org.apache.hcatalog.mapreduce.InputJobInfo
    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)
    ... 9 more

To run my code I use the following settings: 要运行我的代码,请使用以下设置:

export LIBJARS=/usr/lib/hive-hcatalog/share/hcatalog/hive-hcatalog-core.jar,/usr/lib/hive/lib/hive-exec.jar,/usr/lib/hive/lib/hive-metastore.jar,/usr/lib/hive/lib/libfb303-0.9.0.jar,/usr/lib/hive/lib/jdo-api-3.0.1.jar,/usr/lib/hive/lib/antlr-runtime-3.4.jar,/usr/lib/hive/lib/datanucleus-api-jdo-3.2.6.jar,/usr/lib/hive/lib/datanucleus-core-3.2.10.jar 导出LIBJARS = / usr / lib / hive-hcatalog / share / hcatalog / hive-hcatalog-core.jar,/ usr / lib / hive / lib / hive-exec.jar,/ usr / lib / hive / lib / hive- metastore.jar,/ usr / lib中/蜂巢/ LIB / libfb303-0.9.0.jar,/ usr / lib中/蜂巢/ LIB / JDO-API-3.0.1.jar,/ usr / lib中/蜂巢/ LIB / ANTLR -runtime-3.4.jar,/ usr / lib中/蜂巢/ LIB / DataNucleus将-API-JDO-3.2.6.jar,/ usr / lib中/蜂巢/ LIB / DataNucleus将核 - 3.2.10.jar

export HADOOP_CLASSPATH=/usr/lib/hive-hcatalog/share/hcatalog/hive-hcatalog-core.jar,/usr/lib/hive/lib/hive-exec.jar,/usr/lib/hive/lib/hive-metastore.jar,/usr/lib/hive/lib/libfb303-0.9.0.jar,/usr/lib/hive/lib/jdo-api-3.0.1.jar,/usr/lib/hive/lib/antlr-runtime-3.4.jar,/usr/lib/hive/lib/datanucleus-api-jdo-3.2.6.jar,/usr/lib/hive/lib/datanucleus-core-3.2.10.jar 导出HADOOP_CLASSPATH = / usr / lib / hive-hcatalog / share / hcatalog / hive-hcatalog-core.jar,/ usr / lib / hive / lib / hive-exec.jar,/ usr / lib / hive / lib / hive- metastore.jar,/ usr / lib中/蜂巢/ LIB / libfb303-0.9.0.jar,/ usr / lib中/蜂巢/ LIB / JDO-API-3.0.1.jar,/ usr / lib中/蜂巢/ LIB / ANTLR -runtime-3.4.jar,/ usr / lib中/蜂巢/ LIB / DataNucleus将-API-JDO-3.2.6.jar,/ usr / lib中/蜂巢/ LIB / DataNucleus将核 - 3.2.10.jar

Any ideas why I get java.lang.NoClassDefFoundError: org/apache/hcatalog/mapreduce/InputJobInfo ? 为什么我会收到java.lang.NoClassDefFoundError:org / apache / hcatalog / mapreduce / InputJobInfo的任何想法?

I think you should add the following dependency in pom.xml. 我认为您应该在pom.xml中添加以下依赖项。

<dependency>
     <groupId>org.apache.hcatalog</groupId>
     <artifactId>hcatalog-core</artifactId>
     <version>0.11.0</version>
</dependency>

I did face exactly same issue. 我确实面临完全相同的问题。 In your case you will need the following jars to your class path: 在您的情况下,您需要将以下jar添加到您的类路径中:

1. jdo2-api-2.3-eb.jar,
2. libthrift-0.9.0.jar,
3. datanucleus-rdbms-3.2.6.jar,
4. hive-ant-0.13.0.jar

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 sqoop:java.lang.NoClassDefFoundError:org / apache / hadoop / mapreduce / InputFormat - sqoop: java.lang.NoClassDefFoundError: org/apache/hadoop/mapreduce/InputFormat Hadoop 1.2.1 - mapreduce 编译期间的“java.lang.NoClassDefFoundError: org/apache/hadoop/mapred/JobConf” - Hadoop 1.2.1 - "java.lang.NoClassDefFoundError: org/apache/hadoop/mapred/JobConf" during mapreduce compilation java.lang.NoClassDefFoundError org.apache.hadoop.hbase.mapreduce.ImportTsv - java.lang.NoClassDefFoundError org.apache.hadoop.hbase.mapreduce.ImportTsv 线程“ main”中的异常java.lang.NoClassDefFoundError:org / apache / hadoop / mapreduce / RecordReader - Exception in thread “main” java.lang.NoClassDefFoundError: org/apache/hadoop/mapreduce/RecordReader GridGain错误:java.lang.NoClassDefFoundError:org / apache / hadoop / mapreduce / JobContext - GridGain Error : java.lang.NoClassDefFoundError: org/apache/hadoop/mapreduce/JobContext java.lang.NoClassDefFoundError:org / apache / hadoop / conf / Configuration - java.lang.NoClassDefFoundError: org/apache/hadoop/conf/Configuration java.lang.NoClassDefFoundError:org.apache.hadoop.hbase.HBaseConfiguration - java.lang.NoClassDefFoundError: org.apache.hadoop.hbase.HBaseConfiguration Hbase java.lang.NoClassDefFoundError:org / apache / hadoop / hbase / MasterNotRunningException - Hbase java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/MasterNotRunningException java.lang.NoClassDefFoundError: org/apache/hadoop/tracing/TraceAdminProtocol - java.lang.NoClassDefFoundError: org/apache/hadoop/tracing/TraceAdminProtocol 致命[主要] org.apache.hadoop.mapreduce.v2.app.MRAppMaster:启动MRAppMaster java.lang.NoClassDefFoundError时出错 - FATAL [main] org.apache.hadoop.mapreduce.v2.app.MRAppMaster: Error starting MRAppMaster java.lang.NoClassDefFoundError
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM