我使用CDH4,并使用新的MapReduce API编写了一个MapReduce应用程序。我对Hadoop -core-1.0.3.jar进行了编译,当我在Hadoop集群上运行它时,我得到了错误:
错误:找到接口org.apache.hadoop.mapreduce。TaskAttemptContext,但类是预期的
我提到了这个StackOverflow问题,它似乎在谈论同样的问题。答案建议我们针对Hadoop-core-2.X.jar文件编译我们的代码,但是我找不到这样的东西。
那么我如何编译它,使它在CDH4中完美运行。
我在上面问题的链接中回答了针对Hadoop 2.0库进行编译的问题。顺便提一下,在Hadoop 1.0之后,不再使用一个Hadoop Core jar进行编译,而是使用两个(或者更多)不同的jar。
我用:hadoop-common-2.0.2-alpha.jarhadoop-mapreduce-client-core-2.0.2-alpha.jar
用于编译我的代码,之后它运行良好,没有给出上述错误。
对于我来说,我发现我使用的是错误版本的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)