cdh4:版本冲突:找到接口org.apache.hadoop.mapreduce.counter,但应为类

bweufnob  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(278)

我正在尝试从cdh3升级到cdh4,从编译到运行时出现版本冲突。我得到这个错误:线程“main”java.lang.CompatibleClassChangeError中出现异常:找到了接口org.apache.hadoop.mapreduce.counter,但应该是类
从google上看,我的代码似乎是针对hadoop1.x编译的,并且是在hadoop2.0上运行的。我在同一个hadoop客户机上编译和运行这个应用程序,所以应该都是hadoop2.0。以下是在客户端或这个测试集群中的任何其他节点上运行“hadoop version”得到的结果:hadoop 2.0.0-cdh4.4.0 subversion file:///data/1/jenkins/workspace/generic-package-rhel64-6-0/topdir/build/hadoop-2.0.0-cdh4.4.0/src/hadoop-common-project/hadoop-common-r c0eba6cd38c984557e96a16ccd7356b7de835e79由jenkins在周二编译9月3日19:33:17 pdt 2013,源代码,校验和为ac7e170aa709b3ace13dc5f775487180使用/usr/lib/hadoop/hadoop-common-2.0.0-cdh4.4.0.jar运行此命令
以下是my pom.xml中的相关依赖项和回购:

<dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-core</artifactId>
            <version>2.0.0-mr1-cdh4.4.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
            <version>2.0.0-mr1-cdh4.4.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.mrunit</groupId>
            <artifactId>mrunit</artifactId>
            <version>0.9.0-incubating</version>
            <classifier>hadoop1</classifier>
 </dependency>
...
 <repository>
            <id>cloudera</id>
            <name>cloudera</name>
            <url>https://repository.cloudera.com/artifactory/cloudera-repos</url>
        </repository>

在编译完我的应用程序之后,这个目录存在于我的maven repo中(这是我没有想到的,似乎是我的问题):.m2/repository/org/apache/hadoop/hadoop core/0.20.2-cdh3u0
但我搜索了maven d的应用程序ependency:tree and 对hadoop核心的唯一引用是:org.apache。hadoop:hadoop-core:jar:2.0.0-mr1-cdh4.4.0:compile仅供参考-我还尝试排除mrunit依赖项和所有测试代码,但结果相同。
有人能告诉我如何从编译时到运行时转换我的版本吗(为什么在我构建应用程序时hadoop core/0.20.2-cdh3u0会被拉下来)?我相信既然我已经安装了hadoopmrv1,在编译和运行时它应该是hadoop2.0代码。。。但是我仍然对mrv1中的版本控制有些困惑。

i2byvkas

i2byvkas1#

找到了-mvn dependency:tree on 它本身并没有向我展示cdh3的依赖性,而是mvndependency:tree -dverbose 揭示了相互冲突的依赖关系。从那里我向pom添加了一个排除项,现在作业运行了。

相关问题