我正在使用CDH4并使用新的mapreduce API编写了MapReduce应用程序。我已经针对hadoop-core-1.0.3.jar编译了它,当我在我的Hadoop集群上运行它时,我得到了错误:
错误:找到接口org.apache.hadoop.mapreduce.TaskAttemptContext,但是预期了类
我提到this StackOverflow question似乎在谈论同样的问题。答案表明我们编译出针对Hadoop-core-2.X.jar文件的代码,但我找不到类似的东西。
那么如何编译它以便它在CDH4中运行完美。
答案 0 :(得分:8)
我在上面的问题中发布的链接中的答案要求针对Hadoop 2.0库进行编译。顺便提一下,在Hadoop 1.0之后,不使用一个Hadoop Core jar进行编译,而是使用两个(或者更多)不同的jar。
我用过: Hadoop的共同-2.0.2-alpha.jar Hadoop的MapReduce的客户端 - 芯2.0.2-alpha.jar
用于编译我的代码,之后它运行正常,没有给出上述错误。
答案 1 :(得分:0)
对我来说,我发现我使用的是错误版本的Hadoop和Avro 1.7.4(http://www.cloudera.com/content/cloudera/en/documentation/cdh4/v4-2-0/CDH4-Release-Notes/cdh4ki_topic_2_9.html)